是否有必要在调用RaisePropertyChanged
之前检查属性值是否已更改,或者它是否已经知道是否确实需要提高它?见下文。
public string Reason
{
get { return pReason; }
set
{
//Is this if statement needed or beneficial?
if (pReason != value)
{
pReason = value;
RaisePropertyChanged("Reason");
}
}
}
string pReason = string.Empty;
如果你将依赖属性绑定到你的属性,它实际上并不重要。
但是,如果你提升PropertyChanged
事件,即使房产没有改变,你也在向消费者撒谎。在这种情况下它并不重要,但在另一种情况下它可能很重要。
我建议您在Visual Studio中为调用PropertyChanged事件的属性创建自己的代码片段。
如果你把断点放到getter上,你会看到有人(wpf绑定)试图获取值,即使它没有改变
在值未更改时引发事件可能不仅仅是侦听事件但可能会显着影响性能的对象的谎言。
通常,View将绑定到ViewModel的属性。响应事件的视图很可能会重新计算其布局,重绘其控件并引发自己的事件。这样,一个看似无害的单一谎言可能会升级为对UI的大部分内容进行不必要的重绘。如果视图是网格中的单元格,则可以触发重绘网格,求助,重新过滤等。