WPF:自定义TreeView [英] WPF : Custom TreeView
问题描述
在我的项目中,我有一个自定义树状视图,其中包含一个数据模板,该数据模板定义在我的XAML文件.对于每个节点,我都会显示一张图片在我的DataTemplete/StackPanel中静态定义路径的地方,这完美地工作了.但是我希望能够从后面的代码中动态更改Root节点的图像.
我不知道该怎么做,甚至不知道该怎么做.因为就像我需要从后面的代码中定义另一个触发器一样!
这是我的代码:
< DataTemplate x:Key =" ; CategoryTemplate"DataType ="{x:Type shop:ShopCategory}">
< StackPanel x:Name =" ; GroupPanel"取向=水平".保证金="0,2,0,2">
<图片x:Name =" ;文件夹来源="C:\ image \ clopng.png" />
< TextBlock x:Name =" ; CategoryName保证金="2,0,0,0&"; Text ="{Binding Path = CategoryName}" />
</StackPanel>
< DataTemplate.Triggers> 跨度>
< DataTrigger Binding =" {绑定路径= IsExpanded,RelativeSource = {RelativeSource TemplatedParent}}"值=真"
< Setter Property ="Source" ; TargetName =文件夹"值="C:\ image \ FolderOpeen.png" />
</DataTrigger>
< DataTrigger Binding =" {绑定路径=已选择,RelativeSource = {RelativeSource TemplatedParent}}"值=真"
< Setter Property ="前景" ; TargetName ="CategoryName";值=白色". />
< Setter Property ="Source" ; TargetName =文件夹"值="C:\ image \ FolderSelected.png" />
< Setter Property =" BitmapEffect" ;>
< Setter.Value> 跨度>
< OuterGlowBitmapEffect GlowColor ="黑色" ; />
</Setter.Value>
</Setter>
</DataTrigger>
</DataTemplate.Triggers>
</DataTemplate>
通过将以下代码添加到我的DataTemplate.Triggers部分,可以静态更改XAML文件中ROOTNode的图像:
< DataTrigger Binding =" {绑定路径= Header.CategoryName,RelativeSource = {RelativeSource TemplatedParent}}"值=音乐">
< Setter Property ="Source" ; TargetName =文件夹"值="C:\ image \ Music.png"; />
</DataTrigger>
可以在那里做同样的事情  ;从后面的代码?,修改路径"Value =" C:\ image \ Music.png"的值.动态地从后面的代码中动态地获取RootNode吗?
预先感谢您.
推荐答案
是的,您可以使用以下代码动态设置触发器:
Yes, You can set trigger dynamically using following code :
TreeViewItem treeViewItem = trv.ItemContainerGenerator.ContainerFromIndex(0) as TreeViewItem;
ContentPresenter myContentPresenter = FindVisualChild<ContentPresenter>(treeViewItem);
DataTemplate dataTemplate = myContentPresenter.ContentTemplate;
dataTemplate.Triggers.Add(..)
这篇关于WPF:自定义TreeView的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!