我不断收到以下错误,我不明白为什么。它发生在暂停时,但仅在访问页面两次之后。也就是说,应用程序加载完毕,我进入页面,然后使用VS2013暂停应用程序,它可以正常工作。但是,如果我改为打开应用程序,转到该页面,然后返回并再次转到该页面,然后暂停...我收到错误消息。我没有将任何复杂类型传递给 frame.Navigate,甚至没有传递任何原始类型。我已更改我的应用程序以确保它甚至不再使用导航参数,以解决此问题。同时,由于我通过 Prism 使用 MVVM,所以我从不直接调用 frame.Navigate。我相信 SessionStateService 会调用它,但我无法通过那里进行调试以弄清楚发生了什么。
错误:“GetNavigationState 不支持传递给 Frame.Navigate 的参数类型的序列化。”
我正在做的唯一奇怪的事情是我在我的页面上嵌入了一个 UserControl,并且我的页面视图模型中有它的视图模型。但是,嵌入式控件的视图模型不是 Prism.StoreApps.Viewmodel,它只是实现 INotifyPropertyChanged。这是因为我在 2 个页面中使用此用户控件,而不是它自己的页面。这是造成问题的原因吗?用户控件的 viewmodel 是每个页面的 viewmodel 类上的一个属性,该属性被标记为 [RestorableState],该用户控件的 viewmodel 中的属性也是如此。如果您认为这可能是导致它的原因,请告诉我为棱镜嵌入用户控制 MVVM 样式的正确方法。
请注意,我还为 OnRegisterKnownTypesForSerialization 设置了一个覆盖,并为我的用户控件的视图模型调用了 SessionStateService.RegisterKnownType。