MVVM - PropertyChangedEventHandler

时间:2012-07-03 09:24:25

标签: mvvm inotifypropertychanged

我从MVVM开始。

我的应用程序使用这个“模式(PM模式 - 我们不在这里辩论:))”并且工作正常;该项目非常简单,据说初学者很容易掌握!如果只是......:)

有一件事令我困惑,这可能与MVVM本身无关; PropertyChangedEventHandler。

我逐行浏览我的代码并且可以看到调用(下面的代码),但我不确定我为什么要调用这个处理程序或者它正在做什么!

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ComponentModel;
using System.Windows.Input;

namespace drMVVM.Model
{
    public class TextContent : INotifyPropertyChanged
    {
        private string text;
        public string Text
        {
            get { return text; }
            set
            {
                if (text != value)
                {
                    text = value;
                    OnPropertyChanged("Text");
                }
            }
        }

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

        #region INotifyPropertyChanged Members

        public event PropertyChangedEventHandler PropertyChanged;

        #endregion
    }
}

我的viewmodel也有类似的代码布局,但我不是设置属性,而是创建对象的实例并应用任何其他逻辑。

PropertyChangedEventArgs是否仅用于更新某些内容已更改的模型的属性?如果是这样,为什么它在模型类中实现而不仅仅是ModelView?是因为它本能地知道是否只是听取改变或提供详细信息通知发生了变化?如果是通知(我假设接口的名称),那么我在Model类中通知了什么?

1 个答案:

答案 0 :(得分:2)

每当您想要通知某人您的房产变更时,都需要

INotifyPropertyChanged。因此,如果ViewModel需要通知视图有关更改以便视图更新其数据绑定,那么ViewModel需要实现它并在每次更改属性时引发事件。

类似地,如果您的模型具有可以更改的属性并且您希望收到通知,那么也可以在模型中实现它。

某些东西并非真正必要,除非它有自动含义;一个是WPF中的数据绑定,需要提示,因此它知道它必须更新。