【发布时间】:2015-08-24 08:32:46
【问题描述】:
我尝试使用 TreeView 显示分层数据,我想为我的不同儿童类型设置不同的 DataTemplates。
但问题是,我的风格没有得到应用。
也许这是一个非常简单的错误,但我真的没有找到它。
<TreeView ItemsSource="{Binding List}">
<TreeView.Resources>
<HierarchicalDataTemplate DataType="{x:Type local:Main}" ItemsSource="{Binding Children}">
<TextBlock Text="{Binding Property1}"/>
</HierarchicalDataTemplate>
<HierarchicalDataTemplate DataType="{x:Type local:Type2}">
<HierarchicalDataTemplate.ItemContainerStyle>
<Style TargetType="TreeViewItem">
<Setter Property="IsExpanded" Value="True"/>
</Style>
</HierarchicalDataTemplate.ItemContainerStyle>
<TextBlock Text="{Binding Property2}"/>
</HierarchicalDataTemplate>
<HierarchicalDataTemplate DataType="{x:Type local:Type3}">
<HierarchicalDataTemplate.ItemContainerStyle>
<Style TargetType="TreeViewItem">
<Setter Property="IsExpanded" Value="False"/>
</Style>
</HierarchicalDataTemplate.ItemContainerStyle>
</HierarchicalDataTemplate>
</TreeView.Resources>
</TreeView>
【问题讨论】:
-
首先想到 - TargetType 不应该是“{x:Type TreeViewItem}”
-
第二个想法-“IsExpaned”中有错字-应该是“IsExpanded”-注意第二个D
-
感谢您的回答,但两者都没有帮助。
-
嗯,这是一个有趣的问题,我会进一步研究它。作为一种解决方法,您可以为该树中的所有 TreeViewItem 设置一个样式,将 IsExpanded 绑定到 VM 上的某个变量,然后将 Type3 设置为 false,Type2 设置为 true?这肯定会奏效,让你得到你想要的。它只是不使用 ItemContainerStyle 功能。
标签: wpf xaml treeview hierarchicaldatatemplate itemcontainerstyle