2011-02-20 22 views
1

私はViewModelBaseクラスを使用して、INotifyPropertyChangedインターフェイスのRaisePropertyChangedメソッドを定義しています。ほとんどのMVVMの人々はこれにかなり精通しています。WPF MVVM:他のプロパティが変更されるたびに、Notifyプロパティが1つのプロパティを変更しました

私はViewModelBaseから継承する検証ViewModelも持っています。それは、インターフェイスと、そのプロパティを検証するいくつかのメソッドを実装します。それにはIsValidプロパティがあります。ルール違反があるかどうかを確認するゲッターだけです。しかし、ビューのこのプロパティにバインドすることを忘れると、しばらく更新する必要があります。これは、基本的には、他のプロパティが変更されるたびに、または少なくとも私が検証するプロパティになります。 1つの簡単な解決策は、RaisePropertyChangedメソッド内でIsValidに通知するだけですが、IsValidが定義されていないViewModelBaseで定義されています。

このジレンマには良い解決策がありますか?

+1

有効なviewmodelクラスのRaisePropertyChangedを上書きすることはできませんか?そのオーバーライドされたメソッドでIsValidに通知することができます – thumbmunkeys

+0

ええ、私はそれを行うことができると思います。それは私が気付かなかったのでとても簡単です。私は、OnRaiseProperty()という仮想メソッドを呼び出して、継承されたクラスで使用したい場合にも使用できると思います。 –

答えて

2

あなたはパターンを標準イベント処理を以下している場合は、あなたのRaisePropertyChanged方法は(それはおそらくprotected virtual方法でなければなりません)virtualとしてマークされますので、あなたがあなたの検証ビューモデルにそのメソッドをオーバーライドすることができます、呼び出しIsValidプロパティのPropertyChangedイベントを呼び出します。

あなたは何をしているのかよく分かりませんが、一般的な検証の場合は、DataAnnotationsなどのフレームワークを使用する方がよいでしょう。

+0

DataAnnotationsをむしろ使用するのはなぜですか。私はそれに精通していない、あなたは私に一般的な考えを与えることができます。実際にIDataErrorInfoを使用しています。 –