检查 WPF DataGrid 的错误状态
我有一个绑定到零件集合的数据网格。 Part 的属性之一是 Quantity,它是一个整数,数据网格中的文本框之一绑定到该数量字段。当用户在此框中输入一些垃圾数据(任何非整数)时,验证将启动,该框以红色突出显示,并显示行错误消息。当数据网格处于该状态时,我希望禁用“保存”按钮,但我找不到任何方法来获取此信息。代码隐藏中的 Validation.GetHasError 返回 false,并且数量字段在我的视图模型中显示 0。我该怎么做?
I have a datagrid bound to a collection of Parts. One of the properties of Part is Quantity, an integer, and one of the textboxes in the datagrid is bound to this quantity field. When the user enters some garbage data into this box (any non-integer), the validation kicks in, the box is highlighted in red, and the row error message appears. When the datagrid is in that state, I want the "Save" button to be disabled, but I can't figure out any way to get this information. Validation.GetHasError in codebehind returns false, and the quantity fields display 0 in my viewmodel. How can I do this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
对于这种情况,我在视图模型中使用包装器属性和 IDataErrorInfo 。如果你有一个整数属性并且 wpf 无法将输入转换为整数 - 你将得到一个 BindingErrorException 并且它永远不会命中视图模型。
然后,您可以轻松地使用 CanSaveCommandExecute 方法来检查视图模型中 IDataErroInfo 的 Error 属性。这样做的优点是您在视图模型中拥有所有信息和控制权。
i use a wrapperproperty and IDataErrorInfo in my viewmodel for such cases. if you have a integer property and wpf cant convert the input to integer - you will get a BindingErrorException and it never hits the viewmodel.
you can then easily use your CanSaveCommandExecute method to check the Error property of IDataErroInfo in your viewmodel. the advantage of this is that you have all information and control in your viewmodel.