从 UWP 库加载图标作为 Xamarin.Forms 中的图像
Load icons from UWP-library as image in Xamarin.Forms
我有以下情况:
- 我们已经/构建了一个 Xamarin.Forms 库,其中还应该包括我们常用的图标
- 这个图标应该在这个库中使用 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 上正常工作(在 ibrary 项目的 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>
我有以下情况:
- 我们已经/构建了一个 Xamarin.Forms 库,其中还应该包括我们常用的图标
- 这个图标应该在这个库中使用 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 上正常工作(在 ibrary 项目的 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>