我在wpf中有一个treeview控件。我需要在evry node添加一个图像。有可能吗?
答案 0 :(得分:1)
如果您想为每个节点提供唯一的图像,您可以执行以下操作:
<TreeView>
<TreeViewItem>
<TreeViewItem.Header>
<Image Source="/WpfApplication2;component/folder.png" Height="25" Width="25"/>
</TreeViewItem.Header>
</TreeViewItem>
<TreeViewItem>
<TreeViewItem.Header>
<Image Source="/WpfApplication2;component/folder1.png" Height="25" Width="25"/>
</TreeViewItem.Header>
</TreeViewItem>
<TreeViewItem>
<TreeViewItem.Header>
<Image Source="/WpfApplication2;component/folder2.png" Height="25" Width="25"/>
</TreeViewItem.Header>
</TreeViewItem>
<TreeViewItem>
<TreeViewItem.Header>
<Image Source="/WpfApplication2;component/folder3.png" Height="25" Width="25"/>
</TreeViewItem.Header>
</TreeViewItem>
</TreeView>
或者,如果你想为每个节点拥有相同的图像,你可以这样做:
<Window.Resources>
<Image Source="/WpfApplication2;component/folder.png" Height="25" Width="25" x:Key="FolderIcon" x:Shared="false"/>
</Window.Resources>
<Grid>
<TreeView>
<TreeViewItem>
<TreeViewItem.Header>
<StaticResourceExtension ResourceKey="FolderIcon"/>
</TreeViewItem.Header>
</TreeViewItem>
<TreeViewItem>
<TreeViewItem.Header>
<StaticResourceExtension ResourceKey="FolderIcon"/>
</TreeViewItem.Header>
</TreeViewItem>
<TreeViewItem>
<TreeViewItem.Header>
<StaticResourceExtension ResourceKey="FolderIcon"/>
</TreeViewItem.Header>
</TreeViewItem>
<TreeViewItem>
<TreeViewItem.Header>
<StaticResourceExtension ResourceKey="FolderIcon"/>
</TreeViewItem.Header>
</TreeViewItem>
</TreeView>
</Grid>
希望这有帮助。
更新以回答以下问题:“如何在点击/展开节点时更改图像/图标”
这是一个快速而肮脏的解决方案。
的Xaml:
<Window.Resources>
<Image Source="/WpfApplication2;component/folder.png" Height="25" Width="25" x:Key="FolderIcon" x:Shared="false"/>
<Image Source="/WpfApplication2;component/folderOpened.jpg" Height="25" Width="25" x:Key="FolderOpenIcon" x:Shared="false"/>
</Window.Resources>
<Grid>
<TreeView>
<TreeViewItem PreviewMouseLeftButtonDown="itemExpanded" Name="treeViewItem">
<TreeViewItem.Header>
<StaticResourceExtension ResourceKey="FolderIcon"/>
</TreeViewItem.Header>
<TreeViewItem>
<TreeViewItem/>
</TreeViewItem>
</TreeViewItem>
</TreeView>
</Grid>
C#/ Code-behind
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void itemExpanded(object sender, RoutedEventArgs e)
{
if (treeViewItem.IsExpanded)
{
treeViewItem.Header = FindResource("FolderIcon");
}
else
{
treeViewItem.Header = FindResource("FolderOpenIcon");
}
}
}
您也可以使用“Expanded”事件完成此操作。如果你想要消除“代码隐藏”,你也可以使用命令或转换器。
答案 1 :(得分:0)
将图片移至资源部分并设置x:Shared =“False”:
<Window.Resources>
<Image Source="links.png" x:Key="imgLinks" x:Shared="False"/>
在模板中使用它:<StaticResource ResourceKey="imgLinks"/>