ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

wpf中TreeView双击事件中获取当前节点、父节点以及子节点

2022-04-29 17:03:29  阅读:566  来源: 互联网

标签:curSelect 节点 双击 Add Tag Department wpf TreeViewItem


由于工作中需要,第一次研究wpf,所以简单记录下

 

wpf:界面内容

<TreeView x:Name="TvDepartment" Background="Gray"
         DockPanel.Dock="Bottom" 
         MouseDoubleClick="TvDepartment_MouseDoubleClick">
</TreeView>

 

wpf:绑定数据供参考

                List<Department> roots = new List<Department>();
                foreach (Department department in departments)
                {
                    if (departments.Count(d => d.DepartID == department.ParentDepartID) == 0)
                    {
                        roots.Add(department);
                    }
                }

                TreeViewItem rootN = new TreeViewItem();
                rootN.Header = "部门信息";
                rootN.Tag = 0;
                TvDepartment.Items.Add(rootN);

                foreach (var root in roots)
                {
                    TreeViewItem rootNode = new TreeViewItem();
                    rootNode.Header = root.DepartName;
                    rootNode.Tag = root;

                    GetChildren(rootNode, root);
                    rootN.Items.Add(rootNode);
                }

 

        private void GetChildren( TreeViewItem node, Department department)
        {
            IEnumerable<Department> children = departments.Where(d => d.ParentDepartID == department.DepartID);

            foreach (Department dep in children)
            {
                TreeViewItem childNode = new TreeViewItem();
                childNode.Header = dep.DepartName;
                childNode.Tag = dep;
                GetChildren(childNode, dep);

                node.Items.Add(childNode);
            }
        }

 

 

wpf:获取节点的数据

        private void TvDepartment_MouseDoubleClick(object sender, MouseButtonEventArgs e)
        {
            //获取当前选中的节点
            var curSelect = this.TvDepartment.SelectedItem as TreeViewItem;
            if (curSelect != null)
            {
                //获取当前选中节点的父节点
                DependencyObject curSParent = curSelect.Parent; 
                if (curSParent.GetType().Name == "TreeView") //表示:顶节点
                {
                    var curSelectParent = curSParent as TreeView;
                    Department departP = (Department)curSelectParent.Tag;

                }
                else if (curSParent.GetType().Name == "TreeViewItem")//表示:除了顶节点的其它节点
                {
                    var curSelectParent = curSParent as TreeViewItem;
                    Department departP = (Department)curSelectParent.Tag;
                }

                deptIds.Clear();
                if (curSelect.Tag.ToString() != "0")
                {
                    Department depart = (Department)curSelect.Tag;
                    deptIds.Add(depart.DepartID);

                    //获取当前选中节点的子节点
                    if (curSelect.Items.Count > 0)
                    {
                        foreach (var item in curSelect.Items)
                        {
                            var curSelectSub = item as TreeViewItem;
                            Department departSub = (Department)curSelectSub.Tag;
                            deptIds.Add(departSub.DepartID);
                        }
                    }
                }
                ShowData(false);
            }
        }

 

标签:curSelect,节点,双击,Add,Tag,Department,wpf,TreeViewItem
来源: https://www.cnblogs.com/ggll611928/p/16207247.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有