我正在使用Prism 4和WPF做一个应用程序,我有一些输入验证,它按预期工作,但当用户点击一个按钮时,我需要知道当时是否存在验证错误。
Prism4是否已经实施了一些方法来处理这个问题,或者我是手工实现它?
答案 0 :(得分:2)
处理验证错误不是Prism作为库的一部分提供的。在实现验证时,棱镜提供的功能是IConfirmNavigationRequest
interface,这使您可以在某些情况下停止导航 - 例如,当页面未通过验证时。
要在您的应用程序中实现验证,我建议您使用IDataErrorInfo
interface(或.NET 4.5 / Silverlight中的INotifyDataErrorInfo
)。
修改强>
要了解您的视图是否通过了验证,您需要在viewmodel中公开一个IsValid
属性,该属性将返回此信息。一种方法是检查viewmodel并返回这些数据;另一种方法是使用ViewBase
让Validation.AddErrorHandler
注册到其错误事件,并在您的视图模型上调用ViewModelBase.AddError()
/ ViewModelBase.RemoveError()
。这样,您的视图模型就会知道验证错误,并且可以轻松返回视图是否有效。