我有一个带有一些图像的ResourceDictionary:
<BitmapImage UriSource="..\Images\Bright\folder-bright.png"
x:Key="FolderItemImage" />
Run Code Online (Sandbox Code Playgroud)
我创建了一个HierarchicalTemplatefor treeview项,如下所示:
<HierarchicalDataTemplate ItemsSource="{Binding VisibleChildren}"
DataType="{x:Type st:StructureTreeItem}">
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding ImageResourceKey}" />
<Image x:Name="iIcon2" Source="{DynamicResource FolderItemImage}"/>
<Image x:Name="iIcon"
Source="{DynamicResource {Binding ImageResourceKey}}"/>
</StackPanel>
</HierarchicalDataTemplate>
Run Code Online (Sandbox Code Playgroud)
现在,当显示项目时:
FolderItemImage整个想法是将项目图像设置为存储在资源中的图像,但不幸的是,上面介绍的技术不起作用,现在我知道,为什么:
<Image x:Name="iIcon3" Width="16" Height="16" Margin="0, 1, 3, 1" >
<Image.Source>
<DynamicResource ResourceKey="{Binding ImageResourceKey}" />
</Image.Source>
</Image>
Run Code Online (Sandbox Code Playgroud)
结果:
PresentationFramework.dll中发生未处理的"System.Windows.Markup.XamlParseException"类型异常
附加信息:无法在"DynamicResourceExtension"类型的"ResourceKey"属性上设置"绑定".'绑定'只能在DependencyObject的DependencyProperty上设置.
所以我必须重新解释一下我的问题:如何将模型中存储的某些数据(可能是?)转换为动态资源?它必须是一个动态资源,因为我确信它可能会在运行时发生变化.