【问题标题】:How can I create a Hierarchical data template using tree view?如何使用树视图创建分层数据模板?
【发布时间】:2017-06-30 15:10:18
【问题描述】:

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

并且只包含三个字段:

  • 类别 ID
  • 类别名称
  • 父类

而实体框架为我创建了两个导航:子类别和父类

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

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

编辑:它类似于这些情况: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>

【问题讨论】:

  • 我不小心把整个标题都写完了
  • a meme,不过没关系。
  • H.B.请查看最后一条消息
  • 模板不起作用吗?它看起来不错,还是您唯一的问题是所有元素都在根列表中?
  • @Darf,我认为您的问题是您没有将 TreeView ItemsSource 绑定到仅具有“最顶层”父项的集合。请参阅this answer 以获取有关如何仅收集顶级父母的示例。您从绑定到实体导航属性的父级向下导航看起来不错。希望你最终得到它。

标签: c# wpf treeview hierarchical-data hierarchicaldatatemplate


【解决方案1】:

你可以试试这样的:

代码隐藏:

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>

【讨论】:

    【解决方案2】:
       <TreeView ItemsSource="{Binding YourItems}"  ItemContainerStyle="
        {StaticResource Level1}">
       <TreeView.ItemTemplate>
       <HierarchicalDataTemplate ItemsSource="{Binding Children}"  
       ItemContainerStyle="{StaticResource Level3}">
       <TextBlock Text="{Binding Name}" />        
       </HierarchicalDataTemplate>
       </TreeView.ItemTemplate>
    
        </TreeView>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-09-12
      • 1970-01-01
      • 2013-04-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多