我的WPF应用程序中有一个treeView。它应该只有两个级别,一些根和它们的子节点。我希望根拥有图像“project.png”,子节点拥有图像“layout.png”。树是动态构建的,这里是xaml:
<TreeView Name="trvMenu" Grid.Column="0" MouseDoubleClick="TreeView_MouseDoubleClick" >
<TreeView.ItemTemplate>
<HierarchicalDataTemplate DataType="{x:Type local:MenuItem}" ItemsSource="{Binding Items}">
<TextBlock Text="{Binding Title}" />
</HierarchicalDataTemplate>
</TreeView.ItemTemplate>
</TreeView>
我需要添加类似:<Image Source="...
的内容,但我需要在树中的不同级别使用两个不同的图像。谢谢你的帮助!
答案 0 :(得分:2)
您需要将图像源绑定到项目的视图模型上的属性 - 例如您已绑定Title
,您希望将Image.Source
绑定到IconUri
所以,示例XAML:
<HierarchicalDataTemplate DataType="{x:Type local:MenuItem}" ItemsSource="{Binding Items}">
<StackPanel Orientation="Horizontal">
<Image Source="{Binding IconUri, Mode=OneWay}" Height="16" Width="16" />
<TextBlock Text="{Binding Title}" />
</StackPanel>
</HierarchicalDataTemplate>
在ViewModel中,类似于:
public string IconUri
{
get { return "pack://application:,,,/AssemblyName;component/Resources/project.png"; }
}
根节点ViewModels将返回project.png的路径,子节点ViewModels将返回layout.png的路径。