zoukankan      html  css  js  c++  java
  • WPF

    在项目中使用OnPropertyChanged方法,最简单的实例:

    private event PropertyChangedEventHandler PropertyChanged;
    protected void OnPropertyChanged([CallerMemberName] string name = "")
    {
    PropertyChanged?.Invoke(this,new PropertyChangedEventArgs(name));
    }

    private int myVar;

    public int MyProperty
    {
    get { return myVar; }
    set { myVar = value; OnPropertyChanged("MyProperty"); }
    }

    TreeView两层结构的实例,如下代码:

    <TreeView ItemsSource="{Binding TVDataSource}" SelectedItemChanged="TreeView_SelectedItemChanged" >
                <TreeView.ItemTemplate>
                    <HierarchicalDataTemplate ItemsSource="{Binding Nodes}">
                        <WrapPanel>
                            <TextBlock VerticalAlignment="Center" Text="{Binding Name}"/>
                        </WrapPanel>
                    </HierarchicalDataTemplate>
                </TreeView.ItemTemplate>
            </TreeView>
    

      TVDataSource是一个树结构集合,对象为TreeViewDataModel,其中有Name属性,Nodes集合。Nodes集合中存放TreeViewNodeDataModel对象。

    这样在后台只需要给TVDataSource集合赋值,树结构就会展现出两级结构。并可以通过点击树结构进行删除等操作。

    对象:

    public class TreeViewDataModel
        {
    
            public TreeViewDataModel()
            {
                Nodes = new ObservableCollection<TreeViewNodeDataModel>();
            }
            public string Name { get; set; }
    
            private ObservableCollection<TreeViewNodeDataModel> nodes;
            public ObservableCollection<TreeViewNodeDataModel> Nodes
            {
                get { return nodes; }
                set { nodes = value; OnPropertyChanged("Nodes"); }
            }
    
            private event PropertyChangedEventHandler PropertyChanged;
            protected void OnPropertyChanged([CallerMemberName] string name = "")
            {
                PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name));
            }
    
    
    
            public class TreeViewNodeDataModel
            {
                public string Name { get; set; }
            }
        }
    

      

      

    赋值:

    private ObservableCollection<TreeViewDataModel> tVDataSource;
            public ObservableCollection<TreeViewDataModel> TVDataSource
            {
                get { return tVDataSource; } set {tVDataSource= value; OnPropertyChanged("TVDataSource"); } }
     

    TVDataSource = new ObservableCollection<TreeViewDataModel>();
    TreeViewDataModel tv = new TreeViewDataModel();
    tv.Name = "A";
    TreeViewNodeDataModel tvNode = new TreeViewNodeDataModel();
    tvNode.Name = "a";
    tv.Nodes.Add(tvNode);
    TVDataSource.Add(tv);

  • 相关阅读:
    关于重载和重写的区别
    UML的关联(Association), 聚合(Aggregation), 组合(Composition)区别
    解析CSS加密技术之“障眼法”
    ASP.NET中MEMCACHED
    新建项目的无法应用已有项目
    C# 判断两张图片是否一致的快速方法
    压力测试中需要掌握的几个基本概念
    软件测试Web数据分析工具HttpWatch安装
    在SQL Server实现最短路径的搜索
    从算法入手讲解如何在SQL Server中实现最优最简
  • 原文地址:https://www.cnblogs.com/ouylvr0625/p/7275559.html
Copyright © 2011-2022 走看看