我将文本框绑定到内存中的对象,该对象在输入错误值时抛出异常。
如果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;
}
}
}
当数字&lt;时,属性Age抛出的异常0或&gt;输入100应该被拦截。
这是我期望的行为:
image1 http://s14.postimage.org/5ge63zjvl/image.jpg
但我得到了例外。
我正在通过此博客学习验证,我发现http://www.codeproject.com/Articles/86955/Silverlight-4-Data-Validation-Tip-of-the-Day-Part
这是第8步,这应该是行为,作者解释了此步骤之外的NotifyOnValidationError和BindingValidationError。
我可以做什么设置?
提前致谢,
圣拉斐尔