BitmapIconSource in a ResourceDictionary.ThemeDictionaries (



我想根据当前Windows主题更改NavigationViewItem的BitmapIcon。

我在主页上添加了一个ResourceDictionary.ThemeDictionaries,如下所示:

<Page.Resources>
<ResourceDictionary>
<ResourceDictionary.ThemeDictionaries>
<ResourceDictionary x:Key="Light">
<BitmapIconSource x:Key="ProductionBitmap"
UriSource="/Assets/Images/ProduccioBlau.png" />
</ResourceDictionary>
<ResourceDictionary x:Key="Dark">
<BitmapIconSource x:Key="ProductionBitmap"
UriSource="/Assets/Images/Produccio.png" />
</ResourceDictionary>

<ResourceDictionary x:Key="HighContrast">
<BitmapIconSource x:Key="ProductionBitmap"
UriSource="/Assets/Images/Produccio.png" />
</ResourceDictionary>
</ResourceDictionary.ThemeDictionaries>
</ResourceDictionary>
</Page.Resources>

然后在NavigationViewItem:中

<NavigationViewItem Content="Ordres fabricació"
Tag="OrdresFabricacio">
<NavigationViewItem.Icon>
<BitmapIcon UriSource="{ThemeResource ProductionBitmap}"
ShowAsMonochrome="False" />
</NavigationViewItem.Icon>
</NavigationViewItem>

但我在UriSource="{ThemeResource ProductionBitmap}"上看到一条歪歪扭扭的线,上面写着:

资源ProductionBitmap具有不兼容的类型。

在这种情况下,使用主题资源的正确方法是什么

应用程序编译时没有出现错误,但在评估主题资源时,我在运行时遇到了异常。

问题是不能以这种方式设置BitmapIconUriSource属性的值。您可以直接将映像路径的字符串值存储在ResourceDictionary中。然后使用ThemeResource来获得字符串值。

像这样:

<ResourceDictionary>
<ResourceDictionary.ThemeDictionaries>
<ResourceDictionary x:Key="Light">
<x:String x:Key="ProductionBitmap" >/Assets/london.png</x:String>
<!--<BitmapIconSource x:Key="ProductionBitmap" UriSource="/Assets/london.png" />-->
</ResourceDictionary>
<ResourceDictionary x:Key="Dark">
<x:String x:Key="ProductionBitmap" >/Assets/paris.png</x:String>
<!--<BitmapIconSource x:Key="ProductionBitmap"  UriSource="/Assets/paris.png" />-->
</ResourceDictionary>

<ResourceDictionary x:Key="HighContrast">
<x:String x:Key="ProductionBitmap" >/Assets/paris.png</x:String>
<!--<BitmapIconSource x:Key="ProductionBitmap" UriSource="/Assets/paris.png" />-->
</ResourceDictionary>
</ResourceDictionary.ThemeDictionaries>
</ResourceDictionary>
</Page.Resources>

这样使用:

<BitmapIcon UriSource="{ThemeResource ProductionBitmap}"  ShowAsMonochrome="False" />

相关内容

  • 没有找到相关文章

最新更新