在MVVM模式中,INotifyPropertyChanged只能在ViewModel中使用,或者我们可以在Model或Bothes中使用吗?

时间:2014-10-15 11:20:21

标签: mvvm mvvm-light

我阅读了很多文章,发现许多人在ViewModel中也使用了INotifyPropertyChanged。所以,我对INotifyPropertyChanged在哪里使用感到困惑。

1 个答案:

答案 0 :(得分:0)

一种流行的方法是使用一个实现InotifyPropertyChanged接口的基类,然后在View Model中继承这个基类。

示例:

    public class NotifyPropertyBase : INotifyPropertyChanged
    {
      public event PropertyChangedEventHandler PropertyChanged;

      public void OnPropertyChanged(string propertyName)
      {
        if (PropertyChanged != null)
        {
            PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
        }
    }
}

然后在视图模型中继承基类:

class MainViewModel : NotifyPropertyBase

最后,在视图模型的属性setter中引发OnPropertyChanged事件,并将属性名称字符串作为参数传递:

  private string _name;
    public string Name
    {
        get { return _name; }
        set
        {
            _name= value;
            OnPropertyChanged("Name");
        }
    }

现在你的UI应该在运行时更新,前提是在Xaml中正确声明了绑定。