我使用ModelView
创建了WPF表单。这个ModelView
有List
项。问题是,当我将项目更改为列表时,表单将继续使用旧项目。
是否有人知道如何通过ModelView
通知他必须更新数据的表单?
答案 0 :(得分:5)
使用ObservableCollection
并在ViewModel中实施INotifyPropertyChanged
示例
如果您有人员列表,请将列表设为ObservableCollection<Person>
public class MyViewModel : INotifyPropertyChanged
{
private ObservableCollection<Person> m_persons;
public ObservableCollection<Person> Persons
{
get
{
return m_persons;
}
set
{
m_persons = value;
OnPropertyChanged("Persons");
}
}
public event PropertyChangedEventHandler PropertyChanged;
private void OnPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
}
在INotifyPropertyChanged
Person
public class Person : INotifyPropertyChanged
{
private string m_name;
public string Name
{
get
{
return m_name;
}
set
{
m_name = value;
OnPropertyChanged("Name");
}
}
public event PropertyChangedEventHandler PropertyChanged;
private void OnPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
}