TreeView递归绑定无限分类数据

TreeView递归绑定无限分类数据

实现一个动态绑定,无限级分类数据时,需要将数据绑定到TreeView控件,分类表的结构是这样的:

字段

类型

Id

int

ParentId

int

Name

Nvarchar(64)

 

实现数据绑定:

        private void ControlsDataBind()
        {
            tvCategory.Nodes.Clear();
            List<Models.Category> types = CommonNews.Helper.OperateContext.Current.LoadNewsTypes();
            IEnumerable<Models.Category> rootNodes = types.Where(t => t.ParentId == 0);
            TreeNode node = null;
            foreach (Models.Category item in rootNodes)
            {
                node = new TreeNode(item.CategoryName, item.CategoryId.ToString());
                if (tvCategory.Nodes.Contains(node))
                {
                    continue;
                }
                IEnumerable<Models.Category> ts = types.Where(t => t.ParentId == item.CategoryId);
                AddNodesToTree(ts, node, 0);
            }
        }

        private void AddNodesToTree(IEnumerable<Models.Category> category, TreeNode node, int level)
        {
            TreeNode childNode = null;
            foreach (Models.Category c in category)
            {
                childNode = new TreeNode(c.CategoryName, c.CategoryId.ToString());
                if (tvCategory.Nodes.Contains(childNode))
                {
                    continue;
                }
                node.ChildNodes.Add(childNode);
                AddNodesToTree(category.Where(t => t.CategoryId == c.ParentId), childNode, level + 1);
            }
            tvCategory.Nodes.Add(node);
        }
TreeViewBind

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
WPF 的 TreeView 控件支持多级绑定,可以实现多级数据的显示。下面是一个简单的示例,演示了如何实现多级绑定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 列表中的所有分类。HierarchicalDataTemplate 的 ItemsSource 属性绑定到 Children 属性,表示当前分类的子分类是 Children 列表中的所有分类。TextBlock 的 Text 属性绑定到 Name 属性,表示当前分类的名称是 Name 属性的值。 通过这种方式,我们可以很方便地实现多级绑定TreeView。如果需要更复杂的数据模板,可以在 HierarchicalDataTemplate 中添加更多的控件和绑定
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值