我有一个这样的数据模板:


 < DataTemplate x:Key =“LeftIconTileTemplate”>
 < Grid Height =“135”Width =“350”Margin =“0”Background =“{ThemeResource MyTileTextBackground}”>
 < Grid.ColumnDefinitions>
 < ColumnDefinition Width =“100”/>
 < ColumnDefinition Width =“*”/>
 < /Grid.ColumnDefinitions>

 < Image Width =“100”Height =“100”Margin =“0,7,0,0”HorizontalAlignment =“Center”VerticalAlignment =“Top”Source =“{Binding Image}”Stretch =“Uniform”AutomationProperties.Name =“{Binding Title}”/>

 < Grid Grid.Column =“0”Grid.ColumnSpan =“2”VerticalAlignment =“Bottom”Margin =“15,0,12,12”HorizontalAlignment =“Stretch”>
 < Grid.ColumnDefinitions>
 < ColumnDefinition Width =“Auto”/>
 < ColumnDefinition Width =“*”/>
 < /Grid.ColumnDefinitions>

 。 。 。

 < /网格和GT;
 < / Grid>
< / DataTemplate>



 我用它来显示可观察集合的内容。在数据对象中,有一个属性可以用来为元素选择一个图标。现在,这是我的应用资源中PNG文件的路径。


我有一个ThemeResource资源字典,在其中,我有不同的图像,我的某些图标想要展示。如何更改上面的代码,以便我可以绑定Image的某些属性,使其根据用户选择的主题而改变?


我创建了一个BitmapImage for每个浅色,深色和默认ThemeResource部分中的图标。然后我在我的XAML文件中创建了一个Style,用于设置Image的Image Source属性。最后,我在数据对象中有一个Style属性,我在DataTemplate的Image中绑定它。除了主题更改不会使图标图像发生变化之外,所有这些以及我尝试的其他一些事情都可以正常工作。 DataTemplate的其余部分发生了变化,但我无法在数据对象中指定一个图标,并且在主题更改时也会动态更改图标。


我的下一个另一种方法是取消DataTemplate,只使用一些嵌套的样式来创建DataTemplate的外观,但每个都有一个单独的图标。然后我可以在OnnavigatedTo()函数中填充页面,让它一切正常。与DataTemplate和主题选择绑定的数据似乎无法协同工作。


总结;如何使用绑定到C#代码中的数据对象来创建具有Image元素的运行时自定义的数据模板,同时还在主题更改时更新自定义的Image元素?