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;

 

 

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM