在WPF中监视属性更改的正确方法



我在互联网上搜索了一些代码,这些代码侦听在INotifyPropertyChanged对象上更改的特定属性。它们大多以

的形式出现
notifier.PropertyChanged +=
    (s,e) => {
        if(e.PropertyName.Equals(propertyName))
            run_my_code();
    }

然而,根据MSDN

PropertyChanged事件可以通过使用null或String来指示对象上的所有属性已经更改。在PropertyChangedEventArgs中作为属性名为空

上述执行是否

notifier.PropertyChanged +=
    (s,e) => {
        if(e.PropertyName.Equals(propertyName) || string.IsNullOrEmpty(e.PropertyName))
            run_my_code();
    }

?因为有这么多代码以另一种方式运行,这是否意味着我必须假设其他东西?当我用null或空字符串通知属性更改时,我有时会有一些代码不工作。

这真的取决于run_my_code将要做什么。PropertyChanged事件仅仅表示对象上的一个或多个属性发生了变化。

如果run_my_code需要根据哪个属性发生了变化做出决定,那么您将需要检查。

最新更新