zoukankan      html  css  js  c++  java
  • 星空雅梦

    WPF TreeView 绑定

    前台:

     <TreeView x:Name="tree" ItemsSource="{Binding Nodes}">
                <TreeView.ItemTemplate>
                    <HierarchicalDataTemplate DataType="{x:Type local:TreeNodeInfo}" ItemsSource="{Binding Path=Nodes}">
                        <TextBlock Background="Aqua" Text="{Binding Name}"/>
                    </HierarchicalDataTemplate>
                </TreeView.ItemTemplate>
            </TreeView>

    后台:

    using System;
    using System.Collections.Generic;
    using System.Collections.ObjectModel;
    using System.ComponentModel;
    using System.Data;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows;
    using System.Windows.Controls;
    using System.Windows.Data;
    using System.Windows.Documents;
    using System.Windows.Input;
    using System.Windows.Media;
    using System.Windows.Media.Imaging;
    using System.Windows.Navigation;
    using System.Windows.Shapes;
    using System.Data.SqlClient;


    namespace TreeDemo
    {
        /// <summary>
        /// MainWindow.xaml 的交互逻辑
        /// </summary>
        public partial class MainWindow : Window
        {
            SortedDictionary<string, TreeNodeInfo> nodeList = new SortedDictionary<string, TreeNodeInfo>();


            public MainWindow()
            {
                InitializeComponent();


               
                DataTable dt = new DataTable();
                dt.Columns.Add("ID");
                dt.Columns.Add("Name");
                dt.Columns.Add("ParentID");
                dt.Rows.Add("1", "研发部", "0");
                dt.Rows.Add("2", "技术部", "0");
                dt.Rows.Add("3", "销售部", "0");
                dt.Rows.Add("4", "硬件组", "1");
                dt.Rows.Add("5", "软件组", "1");
                dt.Rows.Add("6", "软件组一", "5");
                dt.Rows.Add("7", "Test", "6");
                TreeNodeInfo rootNode = new TreeNodeInfo();
                rootNode.ID = "0";
               
                nodeList.Add("0", rootNode);
                foreach (DataRow row in dt.Rows)
                {
                    string id = row["ID"].ToString();
                    if (!nodeList.ContainsKey(id))
                    {
                        nodeList.Add(id, new TreeNodeInfo() { ID = id, Name = row["Name"].ToString(), ParentID = row["ParentID"].ToString() });
                    }
                }
                foreach (var node in nodeList.Values)
                {
                    TreeNodeInfo tnParent = null;
                    if (!string.IsNullOrEmpty(node.ParentID))
                    {
                        if (nodeList.TryGetValue(node.ParentID, out tnParent))
                        {
                            tnParent.Nodes.Add(node);
                        }
                    }
                }


                this.DataContext = rootNode;


            }
        }


        public class TreeNodeInfo : INotifyPropertyChanged 
        {
            public string ID { get; set; }
            public string name = "";
            public string Name
            {
                get { return name; }
                set
                {
                    name = value;
                    RaisePropertyChanged("Name");
                }
            }
            public string ParentID { get; set; }


            private ObservableCollection<TreeNodeInfo> nodes = new ObservableCollection<TreeNodeInfo>();
            public ObservableCollection<TreeNodeInfo> Nodes
            {
                get
                {
                    return nodes;
                }
            }


            public void RaisePropertyChanged(string propertyName)
            {
                if (PropertyChanged != null)
                {
                    PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
                }
            }


            public event PropertyChangedEventHandler PropertyChanged;
     
        }
    }

    特别是红颜色的字体,看不懂有没有大神解释一下,这是师傅给的Demo自己看不懂

    https://www.cnblogs.com/shuang121/archive/2012/11/29/2794278.html    找到的另一种方法

  • 相关阅读:
    mysql 系列文章推荐
    文章推荐
    LeetCode 229: Majority Element II
    archlinux安装ssh,并启动服务 | 繁华的森林
    小程序之登录
    owasp top10
    JAVASE学习笔记—009 异常处理
    Spring学习笔记:Bean的配置及其细节
    Vim编码识别及转换
    理解 Java 中的类装载器
  • 原文地址:https://www.cnblogs.com/LiZhongZhongY/p/10896932.html
Copyright © 2011-2022 走看看