我将一个文本框绑定到内存中的一个对象,当输入错误的值时会引发异常。
如果 TextBox 将 ValidatesOnException 设置为 true 并且 Mode=TwoWay,那么如果发生异常,它应该被 Binding 拦截,但事实并非如此。
文本框看起来像:
<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超出了这一步。
我可能无法进行哪些设置?
提前致谢,
拉斐尔