我从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类中通知了什么?
发布于 2012-07-03 17:31:04
当您想要通知某人您的属性的更改时,INotifyPropertyChanged是必需的。因此,如果您的ViewModel需要通知视图更改,以便视图更新其数据绑定,那么您的ViewModel需要实现它,并在每次更改属性时引发事件。
类似地,如果您的模型具有可以更改的属性,并且您希望得到通知,那么也可以在您的模型中实现它。
这对于某些事情来说并不是真正必要的,除非它有自动化的含义;其中之一是WPF中的数据绑定,它需要一个提示,这样它就知道它必须更新。
https://stackoverflow.com/questions/11308019
复制相似问题