zoukankan      html  css  js  c++  java
  • WPF后台修改内容界面不显示问题

    通知3部曲:
    1.Model继承并实现 INotifyPropertyChanged 接口;
    2.数据集合使用ObservableCollection<T>集合;
    3.View使用Binding数据对象属性;
    ————————————————————————————————————————————————————————————————
    如果不行再看看集合在赋值前需要实例化,不然就出不来(必须要同一个源才行)

    public class ViewModel
        {
            private ObservableCollection<Person> _PersonList = new ObservableCollection<Person>();// 可以
            /// <summary>
            /// 
            /// </summary>
            public ObservableCollection<Person> PersonList
            {
                get { return _PersonList; }
                set { _PersonList = value; }
            }
            public ViewModel()
            {
                _PersonList = new ObservableCollection<Person>();// 也可以
            }
        }

    在Window后面使用的时候定义需要在this.DataContext=vm;之前就完成集合的实例化,否则就通知不了。

    ViewModel vm=new ViewModel();
    this.DataContext=vm;

    ————————————————————————————————————————————————————————————————
    错误例子:如果ViewModel这么定义就不行了

    public class ViewModel
        {
            private ObservableCollection<Person> _PersonList;
            /// <summary>
            /// 
            /// </summary>
            public ObservableCollection<Person> PersonList
            {
                get { return _PersonList; }
                set { _PersonList = value; }
            }
            public void AddData()
            {
                _PersonList = new ObservableCollection<Person>();//这时候已经不行了
            }
        }

    具体使用的时候:

    ViewModel vm=new ViewModel();
    this.DataContext=vm;
    vm.AddData();

    如果这时候界面想正常显示,需要重新赋值,使用this.DataContext=vm;也不好用必须↓↓↓

    datagrid.ItemsSource=vm.PersonList;
     
  • 相关阅读:
    三大范式
    html 横线的代码
    CSS下拉 菜单3.27第一次
    JS页面三种打开方式及对话框
    函数整理
    3.22整理作业
    for循环,if 练习
    php测试题
    设计模式
    面向对象的三大特性
  • 原文地址:https://www.cnblogs.com/zbfamily/p/6378034.html
Copyright © 2011-2022 走看看