请教高手:WPF中数据验证ExceptionValidationRule未能捕捉数据源异常

jiuzaizuotian2014 2015-03-21 01:03:07
请教各路大侠,小弟在WPF编写数据验证过程中遇到问题如下,在数据源对象中存在UnitCost属性,当设置属性时,如为负数,则跑出ArgumentException类型的异常。
在XAML中,将TextBox与其绑定,并在绑定对象中设置ExceptionValidationRule属性,本来期望ExceptionValidationRule能够捕获源数据中的异常,但是当程序运行后在TextBox中输入负数(如-1),程序即终止,显示用户代码未处理ArgumentException。请教大侠,为什么ExceptionValidationRule未能捕获ArgumentException异常,如能协助,不甚感激。


---------------------------------------------------以下是XAML文件中textbox及其数据绑定---------------------------------------------------------------
<TextBox HorizontalAlignment="Left" Height="23" Margin="211,176,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="225" Validation.Error="validationError">
<TextBox.Text>
<Binding Path="UnitCost" ValidatesOnExceptions="True" UpdateSourceTrigger="PropertyChanged">
<Binding.ValidationRules>
<ExceptionValidationRule></ExceptionValidationRule>

</Binding.ValidationRules>
</Binding>
</TextBox.Text>
</TextBox>


---------------------------------------------------以下是数据源对象的UnitCost属性,在该属性中当值小于0时抛出异常-----------------------

private decimal unitCost;
public decimal UnitCost
{
get{return unitCost;}
set {
unitCost = value;

if (unitCost < 0)
throw new ArgumentException("UnitCost cannot be negative.");
else
{
unitCost = value;

}
OnPropertyChanged(new PropertyChangedEventArgs("UnitCost"));
}
}
...全文
346 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
jiuzaizuotian2014 2017-11-08
  • 打赏
  • 举报
回复
非常感谢回答
lincolnandlinda 2015-03-30
  • 打赏
  • 举报
回复
我试了下,没有什么问题。如果你使用VS调试,会弹出这个异常,但是点击继续后,程序正常运行.如果你使用Ctrl+F5运行,是没有异常抛出的。 另外,你的Text 的Binding的属性设置冗余,使用下面即可

 <TextBox HorizontalAlignment="Left" Height="23" Margin="211,176,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="225"  Validation.Error="validationError" Text="{Binding Path=UnitCost, ValidatesOnExceptions="True", UpdateSourceTrigger="PropertyChanged"}">
baidu_27000643 2015-03-30
  • 打赏
  • 举报
回复
不自动楼主解决问题没有 我也有类似的问题

111,095

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧