为什么MvvmCross创建一个新的ViewModel当后退按钮被按下

本文关键字:ViewModel 按钮 创建 MvvmCross 一个 为什么 | 更新日期: 2023-09-27 18:08:43

我正在用MVVMCross构建一个Windows 8.1移动应用程序,我注意到在视图模型之间导航时一些奇怪的行为。

我有2个视图模型像这样…

public class FirstViewModel : MvxViewModel
{
   public override void Start()
   {
      base.Start();
   }
   public void Init()
   {
      //init code here
   }
   ...
   private void GoForward()
   {
        ShowViewModel<SecondViewModel>();
   }
}
public class SecondViewModel : MvxViewModel
{
   private void GoBack()
   {
      Close(this);
   }
}

当我在SecondViewModel上调用Close(this)时,Mvvmcross再次在FirstViewModel上调用Start()和Init(),就像它被墓碑一样。

为什么会发生这种情况?即使我只离开FirstViewModel几秒钟,它似乎立即被埋葬了。我该如何阻止这种情况的发生?这很令人沮丧,因为我现在必须不断地维护FirstViewModel的状态

为什么MvvmCross创建一个新的ViewModel当后退按钮被按下

您需要在页面构造函数中编写以下代码行。这将启用访问页面的缓存。

NavigationCacheMode = NavigationCacheMode.Required;