2013-04-06 90 views
0

我在我的视图模型属性MyProperty其中也有一些属性中调用OnPropertyChanged。只有当其中一个属性发生变化时,我才会明确地呼叫OnPropertyChanged("MyProperty")当一个属性的属性改变

我能做到这一点

MyProperty.PropertyChanged += MyPropertyChanged; 

但是当所有属性的更改处理程序被调用。我知道我可以检查PropertyName是否匹配,但我想知道是否有更好的方法。

我需要这个的原因是因为我绑定MyProperty某些控件和转换器我需要使用它的多个属性,但是当这些属性更改时,控件中看不到该更改。

+0

为什么不提高'PropertyChanged'连续两个属性? – 2013-04-06 18:34:07

+0

我不知道我能做到。我在这里谈论MyProperty及其属性之一(MyPropertyProperty)。解决办法是在MyPropertyProperty更改时在我的viewmodel中调用OnPropertyChanged(“MyProperty”),但是我不知道如何实现这个 – 2013-04-06 18:46:36

+0

哦,那么你必须按照上面提到的方式检查处理程序中的属性名称并自己提高它。为什么你认为这不是更好的解决方案? – 2013-04-06 18:49:11

回答

1

如果myProperty的类型的属性不再跳跃到任何东西那么没有理由为该类型实现INotifyPropertyChanged的。无论是否存在 - 如果您需要手动处理其中一个属性的更改,您可以简单地定义在视图模型中更改和处理时引发的自定义事件。如果您已经使用的PropertyChanged和比较字符串 - 你应该罚款,除非该事件发生每秒多少次,