C# WPF-PRISM视图激活后,验证将停止

C# WPF-PRISM视图激活后,验证将停止,c#,wpf,prism,C#,Wpf,Prism,要在WPF/PRISM中切换视图,我在区域上使用激活/停用 我有一个实现了IDataErrorInfo的基类,当我的模块加载我的视图时,验证立即发生。当我切换到另一个视图并返回时,验证就消失了。。没有显示字段包含错误的工具提示或标记。唯一停止的是“提交”按钮上的安全检查 我想不是很人性化 因此,我目前正在寻找一种方法来重新评估激活后的视图 [根据请求编码]您可以随时清除视图,并在导航时将其再次添加到RegionManager。通常,这与自定义代码有关,很难找出其他错误,可能是从容器中获得的单个错

要在WPF/PRISM中切换视图,我在区域上使用激活/停用

我有一个实现了IDataErrorInfo的基类,当我的模块加载我的视图时,验证立即发生。当我切换到另一个视图并返回时,验证就消失了。。没有显示字段包含错误的工具提示或标记。唯一停止的是“提交”按钮上的安全检查

我想不是很人性化

因此,我目前正在寻找一种方法来重新评估激活后的视图


[根据请求编码]

您可以随时清除视图,并在导航时将其再次添加到RegionManager。通常,这与自定义代码有关,很难找出其他错误,可能是从容器中获得的单个错误,也可能是在使用ViewModel时不再验证的错误,等等

RegionManager区域中的“清除所有视图,然后再次激活”是通常有效的暴力解决方案,良好实践解决方案介于在ViewModel中处理这些问题或编写自己的
RegionBehavior
并将其添加到自举程序中的Prism之间


您在Prism的两个参考实现中都有一些
RegionBehavior
类的示例。

我尝试了您的第一个建议,但问题是我的ViewModel附加到singleton类上的事件。删除视图并再次添加它将创建该事件的第二个附件,我不希望该事件再次发生。只要我不需要触发那个特定事件,它就起作用了。这是一个很容易解决的问题。在删除所有视图之前,只需取消订阅该事件。同样,通过编写自己的RegionBehavior,您可以在RegionManager上的Attach/Detach操作上执行此操作,这是最好的方法。我通过在执行my submit命令时附加我的事件来解决此问题。。当我的服务器响应时,将触发该事件。。我为没有更早地达到这一点而大跌眼镜——感谢您对区域行为的建议。我花了整整一周的时间为第一个使用它的应用程序构建了一个好的Prism基础设施,不得不处理很多问题,其中大多数问题甚至没有通过“谷歌”记录下来,所以我尝试帮助其他同行完成同样的过程!祝您的实现好运。