Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wpf 使用PRISM4检测验证错误_Wpf_Prism_Prism 4 - Fatal编程技术网

Wpf 使用PRISM4检测验证错误

Wpf 使用PRISM4检测验证错误,wpf,prism,prism-4,Wpf,Prism,Prism 4,我正在使用Prism 4和WPF做一个应用程序,我有一些输入验证,它按预期工作,但当用户单击按钮时,我需要知道是否存在验证错误 Prism4是否实现了一些功能来处理此问题,或者我必须手动实现它?处理验证错误不是Prism作为库的一部分提供的功能。prism提供的在实现验证时有用的功能是,它允许您在某些情况下停止导航,例如当页面未通过验证时 要在应用程序中实现验证,我建议使用(或.NET 4.5/Silverlight中的INotifyDataErrorInfo) 编辑 要知道视图是否通过了验证,

我正在使用Prism 4和WPF做一个应用程序,我有一些输入验证,它按预期工作,但当用户单击按钮时,我需要知道是否存在验证错误


Prism4是否实现了一些功能来处理此问题,或者我必须手动实现它?

处理验证错误不是Prism作为库的一部分提供的功能。prism提供的在实现验证时有用的功能是,它允许您在某些情况下停止导航,例如当页面未通过验证时

要在应用程序中实现验证,我建议使用(或.NET 4.5/Silverlight中的
INotifyDataErrorInfo

编辑


要知道视图是否通过了验证,您需要在viewmodel中公开一个
IsValid
属性,该属性将返回此信息。一种方法是检查viewmodel并返回该数据;另一种方法是让您的
ViewBase
使用
Validation.AddErrorHandler
注册到其错误事件,并在视图模型上调用
ViewModelBase.AddError()
/
ViewModelBase.RemoveError()
。通过这种方式,视图模型可以了解验证错误,并可以轻松返回视图是否有效。

是的,我正在模型中实现IDataErrorInfo,但我有一个窗口,其中包含一些正在验证的文本框。现在,当用户单击“保存”按钮时,我需要确保当前没有验证错误才能继续在文本框中保存文本。嗨@Lester,我将使用第二种方法,但我不知道如何从我的模型中调用AddError()和RemoveError()。你能帮我吗?@Michelle你必须自己实现这些方法,可能是在你的viewmodel基类中。最简单的方法是只保留一个错误集合,并在调用这些方法时根据需要进行更新。然后,
IsValid
的实现将像
return\u myErrorCollection.Count==0一样简单