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;

 

 

 

posted @ 2017-02-08 14:27  xiao贝  阅读(2600)  评论(1编辑  收藏  举报