HierarchicalDataTemplate:仅限第一级子级

时间:2013-02-06 12:40:34

标签: c# .net xaml treeview hierarchicaldatatemplate

我有一个项目的树状视图,目前显示所有级别的孩子,最远到最远。如何只展示第一级儿童?也许是HierarchicalDataTemplate错误的方法吗?瘫痪2级和更远的孩子是不够的。

4 个答案:

答案 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)。