2011-03-13 28 views
2

我有一個WPF窗體使用ModelView。這ModelView有一個List的項目。問題是,當我將項目更改爲列表時,表單繼續存在舊項目。使窗體重新檢查ModelView

有誰知道我怎樣才能使通知的形式,他已與ModelView更新它的數據嗎?

+0

在修改*當前列表*或修改*列表中的項目時,您沒有得到更新的問題? – Jon

+0

我有一個數組屬性填充列表的數據。當我向該列表添加項目時,表單中沒有任何反應。 –

+2

Meleak的答案的前半部分是你需要的,然後。 – Jon

回答

5

使用ObservableCollection和視圖模型

實現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)); 
     } 
    } 
} 

Person

實現 INotifyPropertyChanged
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)); 
     } 
    } 
}