MVVM设计模式需要基本指导

时间:2014-06-10 15:08:55

标签: c# mvvm

我不熟悉MVVM设计模式。所以从网址http://www.geekchamp.com/articles/windows-phone-mango-getting-started-with-mvvm-in-10-minutes

上阅读相关文章

这是一个MVVM设计模式的小代码

public class Person : INotifyPropertyChanged
{
    private string name;
    private int age;

    public string Name
    {
        get
        {
            return name;
        }
        set
        {
            if (this.name != value)
            {
                this.name = value;
                this.RaisePropertyChanged("Name");
            }
        }
    }

    public int Age
    {
        get
        {
            return this.age;
        }
        set
        {
            if (this.age != value)
            {
                this.age = value;
                this.RaisePropertyChanged("Age");
            }
        }
    }

    public event PropertyChangedEventHandler PropertyChanged;

    private void RaisePropertyChanged(string propertyName)
    {
        PropertyChangedEventHandler handler = this.PropertyChanged;
        if (handler != null)
        {
            handler(this, new PropertyChangedEventArgs(propertyName));
        }
    }
}

1)我想知道PropertyChangedEventHandler有什么用? 它做了什么?

2)我想知道this.RaisePropertyChanged("Age");正在做什么?

请以简单的方式解释,以便我了解它们的用途和重要性。

感谢

2 个答案:

答案 0 :(得分:1)

这两件事允许你的Person类通知用户界面(即MVVM中的视图)某些内容已经发生变化。

所以:

PropertyChanged是一个事件(类型为PropertyChangedEventHandler),视图可以订阅,触发后可以执行"某事"。

RaisePropertyChanged是一种方法,你可以在课堂上称之为"嘿,我已经改变并解雇了这个事件(如上所述)"。

因此,假设您的人名更改,那么PropertyChanged事件将被提升,然后会通知视图,他们可能感兴趣的事情已经发生。重点是课程需要某种方式告诉世界其他地方发生了什么事。它通过事件来实现。当然,每个人都可能会忽略这一事件,但通过提高它,你已经完成了自己的工作。

答案 1 :(得分:1)

1)PropertyChangedEventHandler有什么用?它做了什么?

PropertyChangedEventHandler"表示处理在组件上更改属性时引发的PropertyChanged事件的方法。"该行代码声明了一个名为PropertyChanged的事件。其他对象可以订阅该事件,以便在属性发生更改时收到通知。

2)这是什么.RaisePropertyChanged(" Age");正在做什么?

this.RaisePropertyChanged(" Age")是对RaisePropertyChanged方法的调用,该方法反过来验证事件的订阅者(处理程序!= null),如果是,则通知他们更改(handler,this,new PropertyChangedEventArgs(propertyName)))。

简而言之,它是一个发布/订阅通知系统,一个对象向其订阅者发布某些内容已发生变化。