我有一个项目的树状视图,目前显示所有级别的孩子,最远到最远。如何只展示第一级儿童?也许是HierarchicalDataTemplate
错误的方法吗?瘫痪2级和更远的孩子是不够的。
答案 0 :(得分:1)
如何使用数据源的过滤版本,以便只包含所需的级别,那么您可以毫无问题地使用HierarchialDataTemplate。
答案 1 :(得分:0)
只需使用DataTemplate
,而不是HierarchicalDataTemplate
。
编辑:知道了。有很多选择。汤米上面的推荐是一个很好的优雅。另一种选择是覆盖TreeViewItem的ControlTemplate,以查找您不想看到并隐藏扩展区域的子项。
答案 2 :(得分:0)
好吧,如果不操纵数据,就不可能只显示一个级别的孩子。控件需要一个属性,它能够确定所显示节点的深度。
这个解决方案来到我身边很明显:我只使用两个平面树视图,第二个依赖于第一个SelectedItem
。根本不需要HierarchicalDataTemplate
。只是一个普通的DataTemplate
。
答案 3 :(得分:0)
据我了解,您需要顶级节点,以及那些级别的1级子节点,而不是更多节点(因此总共有2级节点)。如果你想在XAML中执行它,你可以使用2个模板:
<Grid>
<Grid.Resources>
<DataTemplate x:Key="TemplateLeaf">
<TextBlock Text="{Binding Text}" /> <!-- Whatever leaf view you want -->
</DataTemplate>
<sdk:HierarchicalDataTemplate ItemsSource="{Binding Items}" ItemTemplate="{StaticResource TemplateLeaf}" x:Key="TemplateNode">
<TextBlock Text="{Binding Text}" />
</sdk:HierarchicalDataTemplate>
</Grid.Resources>
<sdk:TreeView ItemsSource="{Binding Items}" ItemTemplate="{StaticResource TemplateNode}" />
</Grid>
(这是Silverlight版本,但它是一样的)。默认情况下,HierarchicalDataTemplate
将自己用作自己的ItemTemplate
,但如果您愿意,可以将其替换为下一级别的其他模板(包括普通DataTemplate
)。