2011-02-24 13 views
7

WPFアプリケーションでは、すべての子コントロール/バインディングにNotifyOnValidationErrortrue(フレームワークはデフォルトでfalse)結合。実際には、他のバインドのデフォルトを指定することもできます。 ValidatesOnDataErrorsも常に真でなければなりません。WPFデータバインディング - 検証ルールを持つすべてのバインディングに対してNotifyOnValidationErrorをtrueに設定します。

たとえば、次のテキストボックスでは、NotifyOnValidationErrorプロパティを手動で指定する必要はありません。 Binding以来

<TextBox> 
    <TextBox.Text> 
     <Binding Path="PostalCode" 
       ValidatesOnDataErrors="True" 
       NotifyOnValidationError="True"> 
      <Binding.ValidationRules> 
       <rules:PostalCodeRule /> 
      </Binding.ValidationRules> 
     </Binding> 
    </TextBox.Text> 
</TextBox> 

答えて

7

続きを見るRagepotato's答え。
これを行う最も簡単な方法は、Bindingから継承した独自のBindingを作成し、コンストラクタにNotifyOnValidationError="True"ValidatesOnDataErrors="True"のような必要なものを設定することです。

public class ExBinding : Binding 
{ 
    public ExBinding() 
    { 
     NotifyOnValidationError = true; 
     ValidatesOnDataErrors = true; 
    } 
} 

そして、あなたはこの

<TextBox> 
    <TextBox.Text> 
     <local:ExBinding Path="PostalCode"> 
      <local:ExBinding.ValidationRules> 
       <rules:PostalCodeRule /> 
      </local:ExBinding.ValidationRules> 
     </local:ExBinding> 
    </TextBox.Text> 
</TextBox> 
代わりにバインディングを使用
関連する問題