MvvmCross:在我的viewmodel上调用Close会崩溃Store app

时间:2015-02-22 07:11:38

标签: exception viewmodel mvvmcross

当我在级别2的viewmodel中调用Close(this)时,我有一个崩溃的应用程序(意思是可以返回一页)。一个在第3级(意思是可以返回两页)回归正常。

我在主应用程序中调用它:

// Register the main view model
Mvx.RegisterSingleton<IMvxAppStart>(new MvxAppStart<StartScreenViewModel>());

在StartScreenViewModel中,我调用

this.ShowViewModel<AddNewViewModel>();

该viewmodel在XAML中有一个ICommand绑定,它调用一个调用的函数:

this.Close(this);

当调用此Close()时,我最终进入UnhandledException处理程序。 异常消息是:

The given key was not present in the dictionary.

at System.Collections.Generic.Dictionary`2.get_Item(TKey key)
at Cirrious.MvvmCross.WindowsCommon.Views.MvxWindowsPage.LoadStateBundle(NavigationEventArgs e)
at Cirrious.MvvmCross.WindowsCommon.Views.MvxWindowsPage.<>c__DisplayClass1.<OnNavigatedTo>b__0()
at Cirrious.MvvmCross.WindowsCommon.Views.MvxWindowsExtensionMethods.<>c__DisplayClass1.<OnViewCreate>b__0()
at Cirrious.MvvmCross.WindowsCommon.Views.MvxWindowsExtensionMethods.OnViewCreate(IMvxWindowsView storeView, Func`1 viewModelLoader)
at Cirrious.MvvmCross.WindowsCommon.Views.MvxWindowsExtensionMethods.OnViewCreate(IMvxWindowsView storeView, MvxViewModelRequest viewModelRequest, Func`1 bundleLoader)
at Cirrious.MvvmCross.WindowsCommon.Views.MvxWindowsPage.OnNavigatedTo(NavigationEventArgs e)

是什么导致这种情况?

2 个答案:

答案 0 :(得分:2)

经过一番挖掘和对导航的疑惑后,我想通了。 我已经覆盖了

OnNavigateFrom(...)
在StartScreenViewModel中

,但未调用

base.OnNavigateFrom(...)

在函数体中!添加现在调用允许导航正常工作。小白!

答案 1 :(得分:1)

我认为默认情况下,Windows应用商店应用会处理不在导航堆栈顶部的页面。您可以覆盖此行为。