Treeview没有展示我的孩子

时间:2013-11-24 14:38:27

标签: c# wpf xaml treeview

我之前没有使用过TreeView,而只是在一些教程中使用它们来获取它们。我以为我有,但事实证明我没有。

我正在尝试将TreeView绑定到一个对象。

对象是

public List<MyGrandparents> MyGrandParents {get;set;}

在MyGrandParent类中,有一个属性

public List<MyParents> MyParents{get;set;}

最后,在MyParent类中有一个属性

public List<MyChildren> MyChildren {get;set;}

在每个类中,还有其他属性,例如Name(没有基类,但在此阶段没有共享代码)

我想将这个地块绑定到树视图,所以在“根”级别我只看到祖父母。我可以扩大祖父母只看父母,我也可以扩展他们看孩子。

我遇到的问题只是最高级别是绑定(祖父级别)。我的XAML是

<TreeView ItemsSource="{Binding MyGrandParents}">
        <TreeView.Resources>
            <DataTemplate DataType="{x:Type local:MyGrandParent}">
                    <TextBlock Text="{Binding Name}" Margin="0,0,10,0" />
            </DataTemplate>
            <HierarchicalDataTemplate DataType="{x:Type local:MyParent}" ItemsSource="{Binding MyGrandParents}">
                    <TextBlock Text="Don't bind to test"></TextBlock>
            </HierarchicalDataTemplate>
        </TreeView.Resources>            
    </TreeView>

我迷失了为什么这不具约束力给我一棵好树。

1 个答案:

答案 0 :(得分:3)

您没有按照正确的模式使用HierarchicalDataTemplate

可能contain children的项目应声明为HierarchicalDataTemplateItemsSource设置为child collection,以便在其下方展示。

并且item not containing any child应该声明为DataTemplate

应该是这样的 -

<TreeView.Resources>
   <HierarchicalDataTemplate DataType="{x:Type local:MyGrandParent}"
                             ItemsSource="{Binding MyParents}">
        <TextBlock Text="{Binding Name}" Margin="0,0,10,0" />
   </HierarchicalDataTemplate>
   <HierarchicalDataTemplate DataType="{x:Type local:MyParent}"
                             ItemsSource="{Binding MyChildren}">
        <TextBlock Text="Don't bind to test"></TextBlock>
   </HierarchicalDataTemplate>
   <DataTemplate DataType="{x:Type local:MyChildren}">
        <TextBlock Text="Don't bind to test"></TextBlock>
   </DataTemplate>
</TreeView.Resources>