我有一个TreeView
控件,显示不同的对象类型。我使用多个DataTemplates,每个类型一个,相应地设置DataType
代码:
<TreeView>
<TreeView.Resources>
<HierarchicalDataTemplate DataType="{x:Type local:Family}" ItemsSource = "Members">
<!-- template omitted here-->
</HierarchicalDataTemplate>
<DataTemplate DataType = "{x:Type local:FamilyMember}">
<!--template omitted-->
</DataTemplate>
</TreeView.Resources>
</TreeView>
现在我想将一个样式应用于HierarchicalDataTemplate
并且仅适用于它。我必须使用样式,因为我设置了TreeViewItem
的一些属性,在这种情况下是items容器。
我试过了:
<HierarchicalDataTemplate DataType="{x:Type local:Family}" ItemsSource = "Members">
<HierarchicalDataTemplate.ItemsContainerStyle>
<Style TargetType = "TreeViewItem">
<!-- some styling of the tree view item-->
</Style>
<\HierarchicalDataTemplate.ItemsContainerStyle>
<!-- template omitted here-->
</HierarchicalDataTemplate>
但样式将应用于所有树项,甚至是那些呈现FamilyMember
个对象的树,这些对象不属于同一模板。
我该怎么办?
答案 0 :(得分:1)
您可以使用ItemContainerStyleSelector属性来控制哪些样式应用于哪些项目。我在this answer中找到了一个可能有助于您入门的示例用法。与该示例的主要区别在于,您可以根据对象的类型而不是对象的属性来选择。