複数のフィールド間の検証に問題があります。たとえば、という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に通知する際に問題が発生しました。