間違った値が入力されたときに例外をスローするメモリ内のオブジェクトにテキストボックスをバインドしました。
TextBoxでValidatesOnExceptionがtrueに設定され、Mode = TwoWayである場合、例外が発生した場合、Bindingによってインターセプトされる必要がありますが、そうではありません。
TextBoxは次のようになります。
<TextBox Name="txtAge"
Text="{Binding Age, Mode=TwoWay, ValidatesOnExceptions=True}"
/>
メモリ内にオブジェクトを作成し、layoutrootグリッドのDataContextをUserControlのコンストラクターで作成されたオブジェクトに設定しました。
Student std = new Student();
LayoutRoot.DataContext = std;
バインドされたオブジェクトタイプは次のとおりです。
public class Student {
private string _name;
public string Name {
get { return _name; }
set { _name = value; }
}
private int _age;
public int Age {
get { return _age; }
set {
if (value > 100 || value < 0) {
throw new Exception("Please enter age between 0 - 100");
}
_age = value;
}
}
}
数値<0または>100が入力されたときにプロパティAgeによってスローされる例外は、インターセプトする必要があります。
これは私が期待する動作です:
しかし、代わりに例外が発生します。
私はこのブログで検証を研究していますhttp://www.codeproject.com/Articles/86955/Silverlight-4-Data-Validation-Tip-of-the-Day-Part
これはステップ8であり、これは動作であるはずです。作成者は、このステップを超えてNotifyOnValidationErrorとBindingValidationErrorについて説明しています。
どのような設定を失敗する可能性がありますか?
前もって感謝します、
ラファエル