2
我需要将图像添加到WPF treeview节点,我看过这个例子How do I add icons next to the nodes in a WPF TreeView?,它的工作正常,除了所有节点都有相同的图像。我想所有的树形视图中没有任何子节点的节点要么没有图像,要么具有不同的图像。不同的WPF Treeview图标取决于节点的类型
这是我的XAML,我设置图像:
<HierarchicalDataTemplate x:Key="NodeTemplate">
<StackPanel Orientation="Horizontal" Margin="2">
<Image Source="test.png" Width="16" Height="16" SnapsToDevicePixels="True"/>
<TextBlock x:Name="tb"/>
</StackPanel>
<HierarchicalDataTemplate.ItemsSource>
<Binding>
<Binding.XPath>child::node()</Binding.XPath>
</Binding>
</HierarchicalDataTemplate.ItemsSource>
<HierarchicalDataTemplate.Triggers>
<DataTrigger Binding="{Binding Path=NodeType}" Value="Text">
<Setter TargetName="tb" Property="Text" Value="{Binding Path=Value}"></Setter>
</DataTrigger>
<DataTrigger Binding="{Binding Path=NodeType}" Value="Element">
<Setter TargetName="tb" Property="Text" Value="{Binding Path=Name}"></Setter>
</DataTrigger>
</HierarchicalDataTemplate.Triggers>
</HierarchicalDataTemplate>
下面是输出的屏幕截图
可能有人请建议我怎么能做到这一点,可能的解决方案可以要么改变XAML,要么通过C#编程。
您好AkselK,我很新的WPF能请你解释一下 和xaml必须放置在哪里?我把它放在标签,但即时获取以下编译时错误 - “我的”是一个未声明的前缀 –
啊,我明白了。 my:是一个名称空间,它在xaml顶部的或标记中声明。在我的情况下,我已经声明我的:xmlns:my =“clr-namespace:NodeExplorer2”就你而言,它将是xmlns:my =“clr-namespace:Your_project_name”。上述所有代码都在您的第一个实际组件(可能为)之上的或中声明。 my:PathConverter意味着我声明了一个PathConverter类型的对象,而x:Key = iconConverter意味着我可以通过{StaticResource iconConverter}来引用它。 –
AkselK
很酷,非常感谢你的解释!我只需要添加一些方法来检查一个特定的节点是否有任何孩子,如果没有,那么我将节点图像更改为一个孩子图标......标记为已回答 –