【发布时间】:2016-05-30 19:24:31
【问题描述】:
使用异常验证
<TextBox>
<Binding Path="Value"
UpdateSourceTrigger="PropertyChanged">
<Binding.ValidationRules>
<ExceptionValidationRule />
</Binding.ValidationRules>
</Binding>
</TextBox>
对于这个属性
int _value = 1;
public int Value
{
get { return _value; }
set
{
if (value < 1)
throw new ArgumentException();
_value = value;
OnPropertyChanged();
}
}
如果我输入废话(例如1asdkfjlsdf)TextBox 将得到一个红色边框。很好。
但是一旦我输入0,就会发生调试中断
我每次都必须点击调试栏上的继续。
如果不进行调试,它会按预期工作:12093813asdf 或 0 值的红色边框。
问题:如何防止这种中断?
我可以取消检查特定异常(屏幕截图上的箭头),但我希望在其他地方发生此异常时中断(例如,在某些方法中也抛出模型逻辑 ArgumentException)。我可以创建自己的异常,抛出它并取消选中它,但我对此也不满意。
【问题讨论】:
-
我很困惑。你告诉它抛出异常,但是当它抛出异常时会感到不安?我认为您可能打算使用 ValidationResults。看看这个:msdn.microsoft.com/library/ms753962%28v=vs.100%29.aspx
-
@Khale_Kitha,点是随机输入(例如
0983abcd)被绑定捕获,而0进入属性,然后是突然的未处理异常。还没有考虑自定义验证规则,谢谢。虽然我不知道如何制作自己的ExceptionBinding,但我能自己捕获属性抛出的异常吗?你想通过展示如何做来节省我一些时间吗? -
我放在这里的东西太多了。将尝试发布可能有帮助的答案。
标签: c# wpf debugging exception binding