首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WPF (.net 3.5) ValidationRule、IDataErrorInfo

WPF (.net 3.5) ValidationRule、IDataErrorInfo
EN

Stack Overflow用户
提问于 2010-06-26 00:26:29
回答 2查看 594关注 0票数 3

我正在尝试找出验证用户输入的最佳方法,我一直在研究ValidationRule和IDataErrorInfo。我有一个VM和一个模型,我想确保用户不会在绑定到doubles (或int)的多个textbox中输入alpha char。

我遇到了3个问题

1)当我使用ValidationRule时,该方法返回一个'ValidationResult‘,但它会去哪里呢?它是作为属性存储在什么地方吗?

2)如果我使用IDataErrorInfo并输入一些字母字符,它永远不会被调用(如果输入数字就会调用),这是预期的吗?*

*(我认为值转换器在这里可能会有所帮助,但我觉得我把两个独立的概念混在一起了)

3)我真正想做的是,当用户点击“保存”并检查所有的值时,在最后做一个验证。因此,根据1838300,使用这两种方法可能不是我所需要的。这是正确的吗,这些真的只用于“即时”验证吗?

我在第三点上的想法是,如果ValidationRule的结果被存储在某个地方,我可以检查每个控件的结果,或者它存储在哪里。或者,如果调用了IDataErrorInfo,我可以手动为每个控件存储一些布尔值并检查这些布尔值。

有什么想法或想法吗?

谢谢!

EN

回答 2

Stack Overflow用户

发布于 2010-06-26 01:45:57

有几件事,你需要知道:

当dependencyproperty的类型与基础值不同时-如果不存在值转换器,则尝试自动转换。

这都是正常绑定引擎的一部分。因此,由于您的textbox输入不能很好地转换为带alpha字符的int/doubles,因此会抛出一个异常,并且会不断抛出,直到您更正了dependency属性(这里是TextBox的Text属性)的值--底层dataobject的属性setter现在永远不会到达。

如果在更改文本框中的文本时查看输出窗口中是否有异常,则可以验证此行为。要了解如何正确地实现验证和IDataErrorInfo:link,请参阅本文。

票数 1
EN

Stack Overflow用户

发布于 2010-08-17 01:26:59

您可能会对的BookLibrary示例应用程序感兴趣。它显示了如何在WPF中使用验证,以及当存在验证错误时如何控制“保存”按钮。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3119697

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档