在wpf中静态属性更改时收到通知

Khu*_*shi 1 c# wpf

这里微软描述了在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)

Jon*_*eet 7

除非有任何东西使用 sender参数,否则无关紧要.从逻辑上讲,使用类型是有意义的:

handler(typeof(TypeDeclaringEvent), new PropertyChangedEventArgs(PropertyName));
Run Code Online (Sandbox Code Playgroud)

编辑:请注意,在您提到的文档中,它指出:

静态事件可以使用以下任一签名.

   public static event EventHandler MyPropertyChanged;
   public static event EventHandler<PropertyChangedEventArgs> StaticPropertyChanged;
Run Code Online (Sandbox Code Playgroud)

您的活动不符合这些,这可能是一个问题.