2009-07-14 8 views
3

MVVMを使用するWPFアプリケーションがあります。 私はPOCOオブジェクトへのバインディングを使用しています。テキストボックスが似オブジェクトのプロパティにバインドされWPF ValidatesOnExceptionバインディングでメッセージ(または例外)を変更する

  <TextBox.Text> 
       <Binding Path="CertainProperty" Mode="TwoWay" > 
        <Binding.ValidationRules> 
         <ExceptionValidationRule/> 
        </Binding.ValidationRules> 
       </Binding> 
      </TextBox.Text> 

今、このプロパティは、AAのint型のプロパティであり、ユーザーが数値以外の値を入力しようとしたとき、彼らは「入力文字列を取得しました正しい形式ではありません "。 私はこのメッセージをより使いやすいものにカスタマイズする必要があります。

どうすればいいですか?

答えて

0

残念なことに、その例外とそのメッセージはフレームワークコード内で深く発生し、単純にスワップアウトすることはできません。しかし、あなたができることの1つは、自分自身を書くことによって例外を完全に回避することですValidationRule。たとえば:もちろん

public class Int32ValidationRule : ValidationRule 
{ 
    public override ValidationResult Validate(object value, CultureInfo cultureInfo) 
    { 
     if (string.IsNullOrEmpty((string)value)) 
      return ValidationResult.ValidResult; 

     int number; 
     return int.TryParse(value.ToString(), out number) 
      ? ValidationResult.ValidResult 
      : new ValidationResult(false, "Please enter a valid integer"); 
    } 
} 

は、核のオプションがstringCertainPropertyをオンにし、あなたのviewmodelやモデルがIDataErrorInfoを経由して、それを検証させることですが、それはあなたの既存のコードからの主要な変更になります。

関連する問題