我正在做一个使用Prism 4和WPF的应用程序,并且我有一些输入验证,它按预期工作,但是当用户单击一个按钮时,我需要知道在那一刻是否存在验证错误呈现。使用PRISM4检测验证错误
Prism4是否有一些实现来处理这个问题,或者我必须手工实现它?
我正在做一个使用Prism 4和WPF的应用程序,并且我有一些输入验证,它按预期工作,但是当用户单击一个按钮时,我需要知道在那一刻是否存在验证错误呈现。使用PRISM4检测验证错误
Prism4是否有一些实现来处理这个问题,或者我必须手工实现它?
处理验证错误并不是Prism作为库的一部分提供的。棱镜确实提供了在实现验证时可能有用的IConfirmNavigationRequest
interface,它使您能够在某些情况下停止导航 - 例如,当页面未通过验证时。
要在您的应用程序中实施验证,我推荐使用IDataErrorInfo
interface(或.NET 4.5/Silverlight中的INotifyDataErrorInfo
)。
编辑
要知道你的观点是否通过了验证,你需要公开您的视图模型的IsValid
属性,将返回此信息。一种方法是检查视图模型并返回这些数据;另一种方法是使用Validation.AddErrorHandler
将您的ViewBase
注册到其错误事件,并在视图模型上调用ViewModelBase.AddError()
/ViewModelBase.RemoveError()
。这样,您的视图模型就知道验证错误,并且可以轻松返回视图是否有效。
是的,我在我的模型中实现IDataErrorInfo,但我有一个窗口,我正在验证一些文本框。现在,当用户单击“保存”按钮时,我需要确保当前没有验证错误来继续保存文本框中的文本。 – Michelle 2012-07-24 20:13:21
@Michelle请看我更新的答案。 – 2012-07-24 20:25:50
嗨@Lester我会用第二种方法,但我不知道如何从我的模型中调用AddError()和RemoveError()。你能帮我吗? – Michelle 2012-07-24 21:23:28