处理ViewModel的模式?

J4N*_*J4N 5 c# wpf prism mvvm prism-6

我们与Prism一起启动了WPF项目,但我遇到了一个问题:

有时,在ViewModel中,我们注册了一些事件或已启动的服务,这些事件或服务在关闭前必须停止。这意味着,当我关闭应用程序时,我需要释放在ViewModel中获取的资源。这样,Dispose将会具有很多意义。

目前,我正在使用ViewModelLocator.Autowire = TruePrism,并且我在考虑不再需要View时,将在需要时将其处置。

我有两种情况:

  • 当我“导航”到视图时(RegionManager.RequestNavigate("RegionName", "RegionUri")
  • 当我在视图中使用“子视图”(这是一个具有自己的ViewModel的UserControl)时

我的问题是:处置那些ViewModel的正确方法是什么?我可以看到多种方法,但是我不确定哪一种是正确的。

小智 3

由于您使用的是区域导航,因此我建议使用简单的区域行为,只要从区域中删除视图,该行为就会调用您的界面方法。我在 Pluralsight 课程中展示了一个这样的例子: https ://www.pluralsight.com/courses/prism-problems-solutions