这里微软描述了在wpf 4.5中我们也可以使用INotifypropertyChanged来获取静态属性.所以我试着这样做.
这是代码:
public static event PropertyChangedEventHandler StaticPropertyChanged;
protected static void OnStaticPropertyChanged(string PropertyName)
{
PropertyChangedEventHandler handler = StaticPropertyChanged;
if (handler != null)
{
handler(this, new PropertyChangedEventArgs(PropertyName));
}
}
Run Code Online (Sandbox Code Playgroud)
但我不知道this在上面的代码中使用什么而不是关键字?
这是我的代码:
public static event PropertyChangedEventHandler StaticPropertyChanged;
protected static void OnStaticPropertyChanged(string PropertyName)
{
PropertyChangedEventHandler handler = StaticPropertyChanged;
if (handler != null)
{
handler(typeof(MainWindowViewModel), new PropertyChangedEventArgs(PropertyName));
}
}
private static Haemogram _cHaemogram;
public static Haemogram cHaemogram
{
get
{
return _cHaemogram;
}
set
{
_cHaemogram = value;
OnStaticPropertyChanged("cHaemogram");
}
}
Run Code Online (Sandbox Code Playgroud)
除非有任何东西使用 sender参数,否则无关紧要.从逻辑上讲,使用类型是有意义的:
handler(typeof(TypeDeclaringEvent), new PropertyChangedEventArgs(PropertyName));
Run Code Online (Sandbox Code Playgroud)
编辑:请注意,在您提到的文档中,它指出:
静态事件可以使用以下任一签名.
Run Code Online (Sandbox Code Playgroud)public static event EventHandler MyPropertyChanged; public static event EventHandler<PropertyChangedEventArgs> StaticPropertyChanged;
您的活动不符合这些,这可能是一个问题.