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

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

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

我有 2 个像这样的 Viewmodels...

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;

关于c# - 为什么按下后退按钮时 MvvmCross 创建一个新的 ViewModel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32105383/

相关文章:

C# 'is' 结构类型检查 - 奇怪的 .NET 4.0 x86 优化行为

azure - 无法在 Windows Phone 8 应用程序中安装 Windows Azure SDK

windows-phone-8 - 如何在 Windows Phone 8 中设置视频录制分辨率。

c# - for 循环中的每次迭代都会覆盖整个数组的值

c# - 限制每秒绑定(bind)更新

.net - 在 MVVM 中创建 ViewModel 的最佳方法

java - 如何在多个 Activity 中使用 ViewModel 和 LiveData 观察者?

c# - 泛型方法重载和优先级

c# - NLog 不创建日志文件

c# - 成就/徽章架构