从UWP库中加载图标作为Xamarin.Forms中的图像

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从UWP库中加载图标作为Xamarin.Forms中的图像相关的知识,希望对你有一定的参考价值。

我有以下情况:

  1. 我们有/构建一个Xamarin.Forms库,它也应该包含我们常用的图标
  2. 此图标应在此库中的XAML年龄段中使用,但也应在最终应用程序中使用

图书馆结构

Base.Library (.Net Standard 2.0 + Xamarin.Forms)
|- Views (XAML)
Base.Library.android
|- Resources
    |- drawables
        |- icon.xml
Base.Library.ios
|- Assets
    |- icon (image asset with 3 resolutions)
Base.Library.Upw
|- Icons
    |- icon.scale-100.png
    |- ...
    |- icon.scale-400.png

这些图标在iOS和Android上运行没有问题(在库项目的XAML页面和使用该库的最终应用程序项目中)。

<Image WidthRequest="24" HeightRequest="24" VerticalOptions="Center"
       HorizontalOptions="End">
    <Image.Source>
        <OnPlatform x:TypeArguments="ImageSource">
            <On Platform="Android,iOS" Value="icon" />
            <On Platform="UWP" Value="Icons/icon.png" />
        </OnPlatform>
    </Image.Source>
</Image>

只有UWP不起作用。是从库中加载图像的特殊语法吗?

我已经尝试过以下方法:

// Prefixed with assembly name of the library
Value="ms-appx:///Base.Library.Uwp/Icons/icon.png"

// Prefixed with namespace of the library
Value="ms-appx:///Base.Library.Uwp.Namespace/Icons/icon.png"
答案

我找到了解决方案。

如果我在值中有ms-appx:///,则将其视为UriImageSource而不是FileImageSource。如果我将其剪掉并使用图标的完整路径(包括程序集名称),则还会显示UWP的图标。

<Image WidthRequest="24" HeightRequest="24" VerticalOptions="Center"
       HorizontalOptions="End">
    <Image.Source>
        <OnPlatform x:TypeArguments="ImageSource">
            <On Platform="Android,iOS" Value="icon" />
            <!-- Icon name prefixed with assembly name -->
            <On Platform="UWP" Value="Base.Library.Uwp/Icons/icon.png" />
        </OnPlatform>
    </Image.Source>
</Image>

以上是关于从UWP库中加载图标作为Xamarin.Forms中的图像的主要内容,如果未能解决你的问题,请参考以下文章

Xamarin.Forms - 添加外部dll

在 Xamarin Forms FlowListView 中加载无限项

在Xamarin.Forms项目中加载缺少程序集的问题

Xamarin.Forms (UWP) - 如何获取 WebView 的 DOM 作为 HTML 字符串?

菜鸟的Xamarin.Forms前行之路——实现按钮的字体图标(可扩展)

Xamarin Forms UWP - 无法调试共享代码