让我们考虑一个由两个视图和两个视图模型组成的简单应用程序。
FirstView上有一个按钮可以激活ShowViewModel,而第二个视图上有一个触发ShowViewModel的按钮。
假设FirstViewModel还订阅了ctor中MyMessage类型的消息。
场景:用户启动应用程序,按下FirstView上的按钮,然后按下SecondView上的按钮。现在我们有以下后台堆栈:FirstView-> SecondView-> FirstView。由于ShowViewModel总是创建一个新实例,我们实际上在内存中有两个FirstViewModel对象。他们每个人都订阅了MyMessages!
我该怎么做才能避免这种情况?我想确保同时只订阅每个ViewModel类的一个实例。我是否必须在视图中使用与平台相关的处理程序(如OnNavigatedTo / OnNavigatedFrom)来避免这种情况?或者是否有跨平台的方式?