1

我从 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
    }
}

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

PropertyChangedEventArgs 是否仅用于更新已更改的模型的属性?如果是这样,为什么它是在模型类中实现的,而不仅仅是 ModelView?是因为它可以本能地知道是只听变化还是提供细节通知发生变化?如果它是一个通知(我假设因此是接口的名称),那么我在我的 Model 类中通知什么?

4

1 回答 1

2

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

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

除非有自动化的含义,否则它并不是真正必要的;一个是 WPF 中的数据绑定,它需要一个提示,所以它知道它必须更新。

于 2012-07-03T09:31:04.487 回答