通知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;