如何使用树视图创建分层数据模板?

时间:2011-12-07 00:23:04

标签: c# wpf treeview hierarchical-data hierarchicaldatatemplate

我正在使用从实体框架创建的类(数据库中的Categories表)

仅包含三个字段:

  • 类别ID
  • 类别名称
  • ParentCategory

实体框架为我创建了两个导航:Subcategories和Parent

当我在树视图中加载该集合时,它会向我显示所有内容,它应该只显示顶层。

我想我应该创建一个分层数据模板,但我真的不知道创建它。

编辑:它类似于这些案例:Entity Framework - Binding WPF Tree view control

我的控件XAML包含:

<TreeView x:Name="objectiveTree" ItemsSource="{Binding Objectives}">
    <TreeView.ItemTemplate>
        <HierarchicalDataTemplate ItemsSource="{Binding Subcategories}">
            <TextBlock Text="{Binding Path=CategoryName}"
        </HierarchicalDataTemplate>
    </TreeView.ItemTemplate>
</TreeView>

2 个答案:

答案 0 :(得分:0)

您可以尝试这样的事情:

代码隐藏:

objectiveTree.ItemsSource = (List<YourMainEntity>) _entities;

XAML:

<TreeView x:Name="objectiveTree">
      <TreeView.ItemTemplate>
            <HierarchicalDataTemplate ItemsSource="{Binding Subcategories}">
                <TextBlock Text="{Binding ParentCategory}" />
                <HierarchicalDataTemplate.ItemTemplate>
                    <DataTemplate>
                        <TextBlock Text="{Binding CategoryName}"/>
                    </DataTemplate>
                </HierarchicalDataTemplate.ItemTemplate>                        
            </HierarchicalDataTemplate>
      </TreeView.ItemTemplate>
</TreeView>

答案 1 :(得分:0)

   <TreeView ItemsSource="{Binding YourItems}"  ItemContainerStyle="
    {StaticResource Level1}">
   <TreeView.ItemTemplate>
   <HierarchicalDataTemplate ItemsSource="{Binding Children}"  
   ItemContainerStyle="{StaticResource Level3}">
   <TextBlock Text="{Binding Name}" />        
   </HierarchicalDataTemplate>
   </TreeView.ItemTemplate>

    </TreeView>