代码之家  ›  专栏  ›  技术社区  ›  WebDucer

将UWP库中的图标作为图像加载到Xamarin中。形式

  •  0
  • WebDucer  · 技术社区  · 7 年前

    我有以下情况:

    1. 我们有/建造了一个Xamarin。表单库,其中还应包括常见图标
    2. 此图标应在该库的XAML ages中使用,但也应在最终的应用程序中使用

    库结构

    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上正常工作(在library项目的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"
    
    1 回复  |  直到 7 年前
        1
  •  0
  •   WebDucer    7 年前

    我找到了解决办法。

    如果我有 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>