複数のフィールド間の検証に問題があります。たとえば、というRangeDateViewModel名前のクラスの2つのインスタンスを含むという名前のViewModelがありますDateViewModel。これらは、それぞれ開始日と終了日を表します。
したがって、私のバインディングは次のようになります。
<TextBox Text="{Binding StartDate.Date, ValidateOnDataError=True}">
<TextBox Text="{Binding EndDate.Date, ValidateOnDataError=True}">
私RangeDateViewModelのクラスはIDataErrorInfoインターフェースを実装しています。私の計画では、次のような関数RangeDateViewModelで検証ロジックを適用することにより、開始日が終了日より前であることを検証します。IDataErrorInfo["propertyName"]
public string this[string columnName]
{
get
{
return ValidationError();
}
}
問題は、これが呼び出されることはなく、代わりに各クラスにIDataErrorInfo存在するプロパティが呼び出されることです。DateViewModel
RangeDateViewModelこれは、バインドされたプロパティが同じレベルではなく、子の内部にあるためだと思いますDateViewModel。
私のニーズは非常に基本的であり、この問題の簡単な解決策がなければならないと思います。
代わりにValidationRulesを使用しようとしIDataErrorInfoましたが、ValidationRulesから現在の検証ステータスをViewModelに通知する際に問題が発生しました。