0

我有一个项目的树视图,它目前显示所有级别的孩子,一直到最远。我怎样才能做到只显示第一级的孩子?HierarchicalDataTemplate也许是错误的方法?折叠 2 级及更多的子级是不够的。

4

4 回答 4

1

如何使用数据源的过滤版本,以便只包含您想要的级别,然后您可以毫无问题地使用 HierarchialDataTemplate。

于 2013-02-06T13:26:42.427 回答
0

只需使用DataTemplate, 而不是HierarchicalDataTemplate.

编辑:明白了。有很多选择。上面汤米的推荐是一个很好的和优雅的。另一种选择是为您不想看到其子项的任何项目覆盖 TreeViewItem 的 ControlTemplate 并隐藏扩展器区域。

于 2013-02-06T12:52:49.370 回答
0

好吧,如果不操纵数据,就不可能只显示一个级别的孩子。该控件需要一个属性,该属性能够确定显示节点的深度。

这个解决方案来找我并且非常明显:我只使用两个平面树视图,第二个依赖于SelectedItem第一个。HierarchicalDataTemplate根本不需要。只是一个普通的DataTemplate

于 2013-02-07T18:47:16.823 回答
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,但如果你愿意,你可以将它替换为下一个级别的其他模板(包括一个 plain DataTemplate)。

于 2013-02-07T20:00:26.270 回答