1. 程式人生 > >屬性更改通知(INotifyPropertyChanged)——針對ObservableCollection

屬性更改通知(INotifyPropertyChanged)——針對ObservableCollection

notify upd ev3 bsp blank rop ref ring handle

問題

在開發webform中,wpf中的ObservableCollection<T>,MSDN中說,在添加項,移除項時此集合通知控件,我們知道對一個集合的操作是CURD
但是恰恰沒有Update的時候提供集合通知,也就是說當我Update的時候,雖然"集合內容“已被修改,但是"控件“卻沒有實現同步更新
INotifyPropertyChanged提供了解決方案。

方案1:INotifyPropertyChanged

傳統方式,實現接口INotifyPropertyChanged

public class StudentByINotifyPropertyChanged: INotifyPropertyChanged
{
    public event PropertyChangedEventHandler PropertyChanged;
    //實現INotifyPropertyChanged接口
    private void NotifyPropertyChanged([CallerMemberName] String propertyName = "")
    {
        if (PropertyChanged != null)
        {
            PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
        }
    }

    private string sex;
    private string name;

    public string Sex
    {
        get { return sex; }
        set
        {
            sex = value;
            NotifyPropertyChanged("Sex");
        }
    }

    public string Name
    {
        get { return name; }
        set
        {
            name = value;
            NotifyPropertyChanged("Name");
        }
    }
}

示例代碼

https://github.com/zLulus/NotePractice/tree/dev3/WPF/WpfDemo/PropertyChanged

方案2:采用框架實現好的

mvvmlight的ViewModelBase已實現該方法,使用如下

技術分享圖片

List與ObservableCollection對比

List可檢查更改,不能檢查增加、刪除
ObservableCollection檢查增加、刪除,不能檢查更改

屬性更改通知(INotifyPropertyChanged)——針對ObservableCollection