0
我有一个TreeView
控件,显示不同的对象对象。我使用多个DataTemplates,每个类型一个,其DataType
相应地设置。
代码:在具有多个DataTemplates的树视图中,如何将样式应用于其中的一个样式
<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
的一些属性,在这种情况下是项目容器。 我想:
<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
对象,它们是同一个模板的不是。
我该怎么做?
感谢您的回答,但有没有办法在普通的XAML中实现? – RoadBump
我能想到的只有XAML。然而,如果你花了一些时间,你可以开发一个足够通用的样式选择器类映射类型。然后,您可以在任何地方重复使用,并仅在XAML中完成工作。我从来没有尝试过。 – Xavier
我试过了,它解决了这个问题。但是现在出于一个奇怪的原因,我在输出窗口中遇到了很多绑定错误,并说'FamilyMember'没有名称为'Members'的成员。似乎它试图将'HierarchicalDataTemplate'应用于家庭成员,即使'DataType'设置为'Family'。现在做什么? – RoadBump