我创建了2个图像资源,我想从TreeView控件的HierarchicalDataTemplate中动态引用它们。
这是我的XAML代码:
<TreeView Margin="17,22" Name="TreeView">
<TreeView.Resources>
<BitmapImage x:Key="Icon1" UriSource="pack://application:,,,/icon1.ico"/>
<BitmapImage x:Key="Icon2" UriSource="pack://application:,,,/icon2.ico"/>
</TreeView.Resources>
<TreeView.ItemTemplate>
<HierarchicalDataTemplate>
<StackPanel Orientation="Horizontal">
<Image Source="{StaticResource Icon1}" Margin="0,0,5,0" Width="16" Height="16"/>
<TextBlock Text="{Binding Name}" Margin="0,2,0,0" FontWeight="Normal" FontSize="11"/>
</StackPanel>
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
</TreeView>
图像的源绑定的正确语法是什么,以便我可以在运行时选择显示哪个静态图像?
答案 0 :(得分:2)
您已经绑定了某些Name
媒体资源。使用整数属性Icon
扩展您的(view-)模型,该属性确定您希望为此条目显示Icon。然后你可以使用一个触发器:
<Image Margin="0,0,5,0" Width="16" Height="16">
<Image.Style>
<Style TargetType="{x:Type Image}">
<Setter Property="Source" Value="{StaticResource Icon1}" />
<Style.Triggers>
<DataTrigger Binding="{Binding Icon}" Value="2">
<Setter Property="Source" Value="{StaticResource Icon2}" />
</DataTrigger>
</Style.Triggers>
</Style>
</Image.Style>
</Image>
答案 1 :(得分:0)
你的意思是代码隐藏吗?在代码隐藏中你可以说
BitmapImage b = (BitmapImage)TreeView.FindResource("Icon1");
然后将其分配给您需要的任何属性。