使用M-V-VM的WPF轻量级验证框架

4
在项目中实现M-V-VM并遵循Karl Shifflett的建议实现验证框架,但不想仅为验证部分使用完整的框架(如Ocean)。 您推荐哪个与M-V-VM模式兼容的验证框架?
2个回答

1

我只能从未使用完整验证框架的经验中说起,因为我一直坚持使用WPF本身提供的内容。

在我的项目中,我在实体/数据类上实现了IDataError接口,并实现了部分"OnValidate"方法,Linq-To-Sql观察到这些方法。然后,作为实体类的静态/共享成员,我实例化了自己编写的验证辅助程序,这些程序提供了实现IDataError.Items和OnValidation方法的后端逻辑。

然后,只需将ValidatesOnErrors=True、ValidatesOnExceptions=True添加到XAML中描述的所有绑定即可。最终结果是令人鼓舞的——WPF提供的无效数据的视觉反馈能力很好,而实现验证的工作量很小。

我建议遵循将用户输入验证逻辑与属性设置器逻辑分开的趋势。有时,一个属性的有效性取决于另一个属性的状态。将验证逻辑保留在属性设置器之外,可以构建出允许最终用户输入两个值以产生有效状态的应用程序,而不会被单个属性设置器拒绝正在输入的值。


我有一个问题,我有一个按钮,我想根据DataContext中属性的验证设置它的IsEnabled属性,你有什么想法吗? - Shimmy Weitzhandler

0
你可以看一下 WPF 应用程序框架 (WAF),它带有一个轻量级的验证框架。
它重用了 .NET Framework 的 System.ComponentModel.DataAnnotations 验证框架,并将其与 WPF 数据绑定的 IDataErrorInfo 支持相结合。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接