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

C# 监视WPF中属性更改的正确方法,c#,wpf,inotifypropertychanged,C#,Wpf,Inotifypropertychanged,我在Internet上搜索了一些代码,这些代码监听INotifyPropertyChanged对象上特定属性的更改。他们中的大多数人都是 notifier.PropertyChanged += (s,e) => { if(e.PropertyName.Equals(propertyName)) run_my_code(); } 但是根据 PropertyChanged事件可以通过在PropertyChangedEventArgs中使

我在Internet上搜索了一些代码,这些代码监听
INotifyPropertyChanged
对象上特定属性的更改。他们中的大多数人都是

notifier.PropertyChanged +=
    (s,e) => {
        if(e.PropertyName.Equals(propertyName))
            run_my_code();
    }
但是根据

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

上述实施是否应予以实施

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

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

这实际上取决于
运行我的\u代码
要做什么。
PropertyChanged
事件仅表示对象上的一个或多个属性已更改


如果
run\u my\u code
需要根据更改的属性做出决定,那么您需要检查。如果没有,则不需要检查。

这实际上取决于
运行我的代码将要做什么。
PropertyChanged
事件仅表示对象上的一个或多个属性已更改


如果
run\u my\u code
需要根据更改的属性做出决定,那么您需要检查。如果没有,则不需要检查。

文档中说,实现和引发事件的人可能会使用null或空,但它是特定于实现的。因此。。。视情况而定。我的想法是使用第一种方法,除非需要第二种方法。你是对的。文档无法控制我的代码滥用Microsoft界面的方式,因此你必须允许。注意:我的iPhone提供了将“微软”自动更正为“微压缩”的功能;你想怎么做就怎么做。但是点头,你知道,瞎马,好孩子。。。所有这些。文档说明那些实现和引发事件的人可能会使用null或空,但它是特定于实现的。因此。。。视情况而定。我的想法是使用第一种方法,除非需要第二种方法。你是对的。文档无法控制我的代码滥用Microsoft界面的方式,因此你必须允许。注意:我的iPhone提供了将“微软”自动更正为“微压缩”的功能;你想怎么做就怎么做。但是点头,你知道,瞎马,好孩子。。。所有这些。我引用的代码实际上是在检查:如果更改的属性不符合它的利益,它什么也不做。我的问题是:如果没有更改的属性名称,根据Microsoft的说法,所有属性都可能更改。因此,我应该运行我的代码吗?@EarthEngine无论对象发生了什么,触发
PropertyChanged
事件,都完全由实现者控制。即使他们把一个财产名称传给你,也没有规则表明任何实际的改变。除非我们知道实现,否则这个问题没有明确的答案。我引用的代码实际上是在检查:如果更改的属性不符合它的利益,它什么也不做。我的问题是:如果没有更改的属性名称,根据Microsoft的说法,所有属性都可能更改。因此,我应该运行我的代码吗?@EarthEngine无论对象发生了什么,触发
PropertyChanged
事件,都完全由实现者控制。即使他们把一个财产名称传给你,也没有规则表明任何实际的改变。除非我们知道具体的实现,否则这个问题没有明确的答案。