WPF - MVVM 之TreeView

在项目中使用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);

 

转载于:https://www.cnblogs.com/ouylvr0625/p/7275559.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值