TreeView 绑定到 List

发布于 2025-01-11 09:32:01 字数 918 浏览 0 评论 0 原文

我有一个项目列表,其中列表中的每个项目都包含另一个项目列表。

public List<JobesGroup> JobeGroups { get; set; } = new List<JobesGroup>() 
{
   new JobesGroup()
   {
       ID=1,
       GroupName="test1",
       Jobes=new List<Jobe>()
       {
           new Jobe()
           {
               ID=1,
               JobeName="sss"
           },
           new Jobe()
           {
               ID=2,
               JobeName="aaa"
           }
       }
   },
   new JobesGroup()
   {
       ID=2,
       GroupName="test2",
       Jobes=new List<Jobe>()
       {
           new Jobe()
           {
               ID=3,
               JobeName="ddd"
           },
           new Jobe()
           {
               ID=4,
               JobeName="fff"
           }
       }
   }
};

我希望 TreeView 主项目显示 GroupName,子项目显示 JobName。如何将其绑定到TreeView

I have a list of items, where each item in the list contains another list of items.

public List<JobesGroup> JobeGroups { get; set; } = new List<JobesGroup>() 
{
   new JobesGroup()
   {
       ID=1,
       GroupName="test1",
       Jobes=new List<Jobe>()
       {
           new Jobe()
           {
               ID=1,
               JobeName="sss"
           },
           new Jobe()
           {
               ID=2,
               JobeName="aaa"
           }
       }
   },
   new JobesGroup()
   {
       ID=2,
       GroupName="test2",
       Jobes=new List<Jobe>()
       {
           new Jobe()
           {
               ID=3,
               JobeName="ddd"
           },
           new Jobe()
           {
               ID=4,
               JobeName="fff"
           }
       }
   }
};

I want the TreeView main items to show the GroupName and the subitemes wo show the JobName. How to bind it to the TreeView?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

世界和平 2025-01-18 09:32:01

您有一个分层数据结构,这意味着一个项目包含另一个项目集合。 TreeView可以使用HierarchicalDataTemplate。这样的模板定义了项目的外观,并指定了下一个级别的 ItemsSource。它还可以通过使用 ItemTemplate 属性。这可以是 HierarchicalDataTemplateDataTemplate 取决于提供分层或非分层数据的级别。如果未指定其他项目模板,则相同的数据模板将应用于所有级别的所有项目。

第一级是 JobesGroup 项,第二级是 Jobes 项。

  • 第一级:需要一个 HierarchicalDataTemplate 来定义 GroupName 的显示方式,并将 Jobes 属性指定为项目的 ItemsSource下一个级别。
  • 第二级:JobeName 的简单 DataTemplate 就足够了,因为下面没有更多级别了。它定义了JobeName的显示方式。
<TreeView ItemsSource="{Binding JobeGroups}">
   <TreeView.ItemTemplate>
      <HierarchicalDataTemplate DataType="{x:Type local:JobesGroup}"
                                ItemsSource="{Binding Jobes}">
         <TextBlock Text="{Binding GroupName}"/>
         <HierarchicalDataTemplate.ItemTemplate>
            <DataTemplate DataType="{x:Type local:Jobe}">
               <TextBlock Text="{Binding JobeName}"/>
            </DataTemplate>
         </HierarchicalDataTemplate.ItemTemplate>
      </HierarchicalDataTemplate>
   </TreeView.ItemTemplate>
</TreeView>

You have a hierarchical data structure, meaning an item contains another collection of items. A TreeView can display hierarchical data using HierarchicalDataTemplates. Such a template defines the apprearance of an item and specifies the ItemsSource for the next level. It can also define a data template for the next level explicitly by using the ItemTemplate property. This can either be a HierarchicalDataTemplate or a DataTemplate depending on the level providing hierarchical or non-hierarchical data. If no other item template is specified, the same data template will be applied to all items across all levels.

The first level are JobesGroup items and the second level are Jobes items.

  • First level: Needs an HierarchicalDataTemplate that defines how GroupName is shown and specifies the Jobes property as the ItemsSource of the next level.
  • Second level: A simple DataTemplate for JobeName is enough, since there are no more levels underneath. It defines how JobeName is displayed.
<TreeView ItemsSource="{Binding JobeGroups}">
   <TreeView.ItemTemplate>
      <HierarchicalDataTemplate DataType="{x:Type local:JobesGroup}"
                                ItemsSource="{Binding Jobes}">
         <TextBlock Text="{Binding GroupName}"/>
         <HierarchicalDataTemplate.ItemTemplate>
            <DataTemplate DataType="{x:Type local:Jobe}">
               <TextBlock Text="{Binding JobeName}"/>
            </DataTemplate>
         </HierarchicalDataTemplate.ItemTemplate>
      </HierarchicalDataTemplate>
   </TreeView.ItemTemplate>
</TreeView>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文