如何在TreeViewItem的模板上使用DataTemplateSelector?

时间:2018-07-11 12:37:10

标签: c# wpf data-binding treeview

我有一个TreeView,带有一个TreeViewItems模板的自定义资源字典。

我需要能够根据每个TreeViewItem的绑定值以编程方式更改模板。

据我所知,我无法从ResourceDictionary xaml访问绑定。

我认为我需要使用自己的userControl扩展TreeView,但是我不确定为实现我想要的内容需要实际添加什么内容。

谢谢。

<TreeView Name="dirTree" AlternationCount="2" Background="#FAFAFA"
                       ScrollViewer.VerticalScrollBarVisibility ="Visible"
              VerticalAlignment="Stretch"
              ItemsSource="{Binding}"
              VirtualizingStackPanel.IsVirtualizing="False"
              VirtualizingStackPanel.VirtualizationMode="Standard"
              ItemTemplateSelector="{StaticResource tuningDataTemplateSelector}">
            <TreeView.Resources>
                <ResourceDictionary Source="UI/Styles/TunerTreeViewStyle.xaml" />
            </TreeView.Resources>

        </TreeView>

这是树状视图,您可以看到我设置了ItemTemplateSelector,但这只会更改内容。我需要为TreeViewItem控件模板本身添加选择器。因此,我需要将其添加到TunerTreeViewStyle.xaml,但我认为您不能从那里获取绑定数据。

1 个答案:

答案 0 :(得分:1)

您不能使用ItemTemplateSelector来更改ControlTemplate的{​​{1}}。

如果要执行此操作,则可以尝试定义带有TreeViewItem的{​​{1}},该ItemContainerStyle会基于某些源属性(例如,设置DataTrigger的{​​{1}}属性) :

Template