0

クラスの実装INotifyDataErrorInfoがあります。エラー通知のあるプロパティがいくつかあります。例えば、

public class Request : INotifyPropertyChanged, INotifyDataErrorInfo
{
    public string LineOfBusinessIdentifier
    {
        get { return  lineOfBusinessIdentifier; }
        set 
        { 
            lineOfBusinessIdentifier = value;
            ValidateLineOfBusiness();
            NotifyPropertyChanged();
        }
    }
      // ValidateLineOfBusiness() Implementation for validation.
}

このクラスは、他の多くのクラスによって継承されます。すべて正常に動作します。今、特定の操作の UI に通知を表示したくない場所が 1 つあります。操作後に通知が必要です。とにかく通知を抑制することができますか。

4

1 に答える 1

1

ValidatesOnNotifyDataErrors (.Net 4.5 以降で導入) が false に設定されている場合 、バインディングはチェックせず、エラーを報告します。デフォルト値は true

"{Binding Path=LineOfBusinessIdentifier, ValidatesOnNotifyDataErrors=False}"

Validation.ErrorTemplate を消去して (エラー通知を非表示にするため)、トリガー セッターでリセットすることもできます。

<Setter Property="Validation.ErrorTemplate" Value="{x:Null}"/>

<!--need custom error template-->
<Setter Property="Validation.ErrorTemplate" Value="{StaticResource ErrorTemplate}""/>

これは検証を無効にするのではなく、エラーの視覚的なインジケーターを非表示にするだけです


Request から派生した viewModel は、GetErrors メソッド (仮想の場合) をオーバーライドし、いくつかの条件下で LineOfBusinessIdentifier プロパティの通知を無効にすることができます。

疑似コード:

override GetErrors(string propertyName) 
{
    if (someCondition)
       return base.GetErrors().Where(prop != LineOfBusinessIdentifier)
    else
       return base.GetErrors()
}
于 2016-04-11T20:34:31.763 に答える