public event PropertyChangedEventHandler PropertyChanged;
private void OnPropertyChanged(string status)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(status));
}
}
刚接触mvvm,请问PropertyChanged这个事件哪里实现的,全局没有实现过是封装在freamwork那个dll了么,很疑惑,请大神解答
任何你自己写的类,只要实现了 INotifyPropertyChanged 接口,就可以,够开放了吧。
答案就是,没有写好的,因为写好的类就限制了你必须从这个类开始继承。
很多第三方MVVM Library都有实现好的基础类。
MVVMCross, MVVMLight, Prism
我想问的是为什么实现了INotifyPropertyChanged ,就能用PropertyChanged这个事件,他是封装在哪里了
@IT_Poor_Bird:
// C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETFramework\v4.0\System.dll
using System.ComponentModel;
namespace System.ComponentModel
{
//
// 摘要:
// 提供对 C# 代码生成器和代码编译器的实例的访问权限。
public interface INotifyPropertyChanged
{
//
// 摘要:
// 在属性值更改时发生。
event PropertyChangedEventHandler PropertyChanged;
}
}
这就是接口的定义。
@爱编程的大叔:
我知道 ,我是想看这个事件哪里有实现了 怎么可以直接用
@爱编程的大叔: 这里只是定义了
@IT_Poor_Bird:
我觉得你可以看看c#的委托方面的知识。
Delegate
随便找了个链接给你看看,可能不一定讲得够清楚,不过你可以延申自己找找相关的文章看看。
探究C#中的Delegate、Event和UnityEvent
@爱编程的大叔: 我觉得你并没有明白我的意思,PropertyChanged += 方法,这里的“方法”在那里实现的,明白?
@IT_Poor_Bird:
表达清楚是提问者的责任,不是回答者的。
在你的提问中,并没有
PropertyChanged += 方法
这么一行语句。
PropertyChanged += 这是事件订阅,可以有无数个订阅者的,订阅函数需要你来实现。
@爱编程的大叔: 不是我刚,你其实也并不知道,到现在你也没有明白被人问的是啥,楼下的我没说人家都知道再说啥
你说的“实现”是什么意思?
这个PropertyChanged是个事件对吧,在那个类中对这个事件进行的订阅,或者说对他进行add
PropertyChanged += 方法
@IT_Poor_Bird: 那个是wpf类库自己实现的。这个事件触发后会更新UI
@会长: 是的 ,我就是想知道这个是哪个类库实现的 我要反编译进去看下源码
@IT_Poor_Bird: 这个我没研究过,你看的真细啊
曾经我也有这个疑问。。后来忘了谁跟我说的,框架自己实现了