我有一个数据绑定NumericUpDown - 控件,绑定如下:
Binding b = new Binding("Value", myDataSource, "myProperty");
b.DataSourceUpdateMode = DataSourceUpdateMode.OnPropertyChanged;
numericUpDown.DataBindings.Add(b);
更改myProperty
会产生一些进一步的影响,并可能会在某个地方进一步向下抛出异常。
检查是否会抛出异常所需的一些信息在GUI中不可用,因此验证输入很困难。 我可以捕获由DataBinding所做的值更改触发的异常吗?或者这是一个糟糕的设计?如果是这样,我是否应该提供所有必要的信息以便能够正确验证输入,或者我不应该使用DataBinding进行复杂的更改?
我非常感谢任何帮助!
richn
答案 0 :(得分:2)
当绑定值更改导致异常时,您会发现有时绑定会吞下它。
要获得它,您可以挂钩绑定的BindingComplete
事件(您可能需要将绑定设置为FormattingEnabled
也为true)。此时,绑定写入数据源时捕获的任何异常都将在事件args上冒出(在它的Exception
属性上)。遗憾的是,您可能会发现堆栈跟踪的大部分丢失了......
编辑:如果您使用的是BindingSource组件,它还会冒BindingComplete
个事件。因此,这可能是捕获其他绑定引发的异常的更快捷方式。
答案 1 :(得分:-1)
数据绑定不应该针对复杂的属性。
检索和设置属性时应进行验证。