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

时间:2015-08-19 20:46:54

标签: c# windows-phone-8 mvvm windows-phone-8.1 mvvmcross

我正在使用MVVMCross构建Windows 8.1移动应用程序,并且在浏览模型之间导航时发现了一些奇怪的行为。

我有2个像这样的View模型......

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的状态。

1 个答案:

答案 0 :(得分:3)

您需要在页面构造函数中编写以下代码行。这样可以对访问过的页面进行缓存。

NavigationCacheMode = NavigationCacheMode.Required;