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

Why does MvvmCross create a new ViewModel when back button is pressed

我正在使用 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 的状态。

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

NavigationCacheMode = NavigationCacheMode.Required;