WPF使用HierarchicalDataTemplate绑定Dictionary生成TreeView

原文: WPF使用HierarchicalDataTemplate绑定Dictionary生成TreeView

Dictionary<string, CustomeType>中的CustomeType是一个集合,将其绑定生成一棵树,树的第一层节点是Dictionary的Key,第二层是CustomeType集合,所有代码用XAML实现。
代码如下:

<TreeView Name="dictree" ItemsSource="{Binding}">

    <TreeView.Resources>

        <HierarchicalDataTemplate ItemsSource="{Binding Value}" DataType="{x:Type local:Job}">

            <TextBlock Text="{Binding Id}"><TextBlock Text="{Binding Name}"></TextBlock></TextBlock>

        </HierarchicalDataTemplate>

    </TreeView.Resources>

    <TreeView.ItemTemplate>

        <HierarchicalDataTemplate ItemsSource="{Binding Value}">

            <TextBlock Text="{Binding Key}"></TextBlock>

            <HierarchicalDataTemplate.ItemTemplate>

                <DataTemplate>

                    <TextBlock Text="{Binding Name}"></TextBlock>

                </DataTemplate>

            </HierarchicalDataTemplate.ItemTemplate>

        </HierarchicalDataTemplate>

    </TreeView.ItemTemplate>

</TreeView>


Jobs
jobs1 = new Jobs();

jobs1.Add(new Job() { Id = 1, Name = "CEO1"});

jobs1.Add(new Job() { Id = 2, Name = "CEO2"});

jobs1.Add(new Job() { Id = 3, Name = "CEO3"});

 

Jobs jobs2 = new Jobs();

jobs2.Add(new Job() { Id = 1, Name = "CEO1"});

jobs2.Add(new Job() { Id = 2, Name = "CEO2"});

jobs2.Add(new Job() { Id = 3, Name = "CEO3"});

 

Dictionary<string, Jobs> allJob = new Dictionary<string, Jobs>();

allJob.Add("CEO one", jobs1);

allJob.Add("CEO two", jobs2);

dictree.DataContext = allJob;


public class Job

{

    public int Id

    { get; set; }

    public string Name

    { get; set; }

    public string Status

    { get; set; }

}

 

public class Jobs : System.Collections.ObjectModel.ObservableCollection<Job> { }

WPFTreeView 控件支持多级绑定,可以实现多级数据的显示。下面是一个简单的示例,演示了如何实现多级绑定TreeView。 假设我们有一个类 Category,它有一个 Name 属性和一个 Children 属性,Children 属性是一个 Category 类型的列表,表示当前分类的子分类。我们可以通过递归的方式来实现多级绑定TreeView。 ```csharp public class Category { public string Name { get; set; } public List<Category> Children { get; set; } } ``` 在 XAML 中,我们可以使用 HierarchicalDataTemplate 来定义 TreeView 的数据模板。下面是一个示例: ```xaml <TreeView ItemsSource="{Binding Categories}"> <TreeView.ItemTemplate> <HierarchicalDataTemplate ItemsSource="{Binding Children}"> <TextBlock Text="{Binding Name}" /> </HierarchicalDataTemplate> </TreeView.ItemTemplate> </TreeView> ``` 在这个示例中,我们使用 HierarchicalDataTemplate 来定义 TreeView 的数据模板。ItemsSource 属性绑定Categories 属性,表示 TreeView 的根节点是 Categories 列表中的所有分类。HierarchicalDataTemplateItemsSource 属性绑定到 Children 属性,表示当前分类的子分类是 Children 列表中的所有分类。TextBlock 的 Text 属性绑定到 Name 属性,表示当前分类的名称是 Name 属性的值。 通过这种方式,我们可以很方便地实现多级绑定TreeView。如果需要更复杂的数据模板,可以在 HierarchicalDataTemplate 中添加更多的控件和绑定
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值