在项目中实现 M-V-VM 并遵循 Karl Shifflett 的建议关于实现验证框架,但真的不想只为验证部分使用完整的框架(如 Ocean)。
您推荐哪种验证框架适用于 M-V-VM 模式?
最佳答案
我只能从不使用完整验证框架的经验中发言,尽管我只是坚持使用 WPF 本身提供的功能。
在我的项目中,我在我的实体/数据类上实现了 IDataError 接口(interface),并实现了 Linq-To-Sql 观察到的部分“OnValidate”方法,然后作为实体类的静态/共享成员,实例化验证 home- brewed helpers 为实现 IDataError.Items 和 OnValidation 方法提供后端逻辑。
然后,只需将 ValidatesOnErrors=True,ValidatesOnExceptions=True 添加到 XAML 中描述的所有绑定(bind)中即可。最终结果是令人鼓舞的——WPF 提供无效数据可视反馈的能力很好,并且实现验证的工作量很小。
我建议遵循将用户输入验证逻辑与您的属性 setter 逻辑分开的趋势。有时,一种属性(property)的有效性取决于另一种属性(property)的状态。将验证逻辑保留在属性 setter 之外,您可以构建最终用户能够输入导致有效状态的两个值的应用程序,而没有任何一个单独的属性 setter 在输入值时拒绝这些值。
关于wpf - 使用 M-V-VM 的 WPF 轻量级验证框架,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1122610/