【问题标题】:WPF MVVM: Notify property changed one property everytime some other property is changedWPF MVVM:每次更改其他属性时通知属性更改了一个属性
【发布时间】:2011-06-30 18:09:32
【问题描述】:

我有一个 ViewModelBase 类,我在其中为 INotifyPropertyChanged 接口定义了 RaisePropertyChanged 方法。大多数 MVVM 人员都对此非常熟悉。

我还有一个继承自 ViewModelBase 的 Validating ViewModel。它实现了一个接口和一些方法来验证它的属性。它有一个 IsValid 属性,它是唯一一个检查是否存在任何违反规则的 getter。但是,如果我不想在视图中绑定到此属性,则必须在某个时间进行更新。这基本上是每次更改其他一些属性时,或者至少是我验证的属性。一种简单的解决方案是仅在 RaisePropertyChanged 方法内通知 IsValid,但它是在未定义 IsValid 的 ViewModelBase 中定义的。

你们中的任何人都有解决这个困境的好方法吗?

【问题讨论】:

  • 你不能在你的验证视图模型类中覆盖你的 RaisePropertyChanged 吗?在那个被覆盖的方法中,你可以通知 IsValid
  • 是的,我想我可以做到。这很简单,我没有注意到。我想我也可以在 OnRaiseProperty() 那里调用一个虚拟方法,然后如果我想在继承的类中使用它。

标签: wpf inheritance mvvm inotifypropertychanged


【解决方案1】:

如果您遵循标准事件处理模式,您的 RaisePropertyChanged 方法将被标记为 virtual(它可能应该是 protected virtual 方法),因此您将能够在验证中覆盖该方法查看模型,调用基础实现,然后为IsValid 属性调用PropertyChanged 事件。

我不太确定你在做什么,但如果是一般验证,你最好使用诸如 DataAnnotations 之类的框架。

【讨论】:

  • 我为什么要使用 DataAnnotations。不是很了解,能不能给个大概的思路。我实际上正在使用 IDataErrorInfo。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-29
  • 2017-08-05
  • 2013-08-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多