TreeView - 根和子节点的不同图像

时间:2014-06-29 10:53:23

标签: c# wpf treeview

我的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="...的内容,但我需要在树中的不同级别使用两个不同的图像。谢谢你的帮助!

1 个答案:

答案 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的路径。