0

我不斷收到以下錯誤,但我不明白爲什麼。它發生在暫停時,但是隻有在兩次訪問頁面之後。也就是說,應用程序加載,然後進入頁面,然後使用VS2013暫停應用程序,並且它工作得很好。但是,如果我改爲打開該應用,請轉到該頁面,然後返回並再次轉到該頁面,然後暫停...我收到錯誤消息。我沒有將任何複雜的類型傳遞給frame.Navigate,甚至沒有任何原始類型。我已經更改我的應用程序,以確保它甚至不再使用導航參數,以努力解決此問題。同時,由於我通過Prism使用MVVM,因此我從不調用frame.Navigate直接反正。我相信SessionStateService會調用它,但我無法通過那裏調試來弄清楚發生了什麼。WinRT Prism.StoreApps:GetNavigationState不支持傳遞給Frame的參數類型的序列化。導航

錯誤: 「GetNavigationState不支持傳遞給Frame.Navigate的參數類型的序列化。」

我正在做的唯一奇怪的事情是,我在我的頁面上嵌入了一個UserControl,並且在我的頁面viewmodel中有它的viewmodel。但是,嵌入式控件的視圖模型不是Prism.StoreApps.Viewmodel,它只是實現INotifyPropertyChanged。這是因爲我在2頁中使用了這個用戶控件,而不是它自己的頁面。這是造成這個問題嗎?用戶控件的視圖模型是每個頁面的viewmodel類的屬性,並且該屬性被標記爲[RestorableState],該用戶控件的視圖模型中的屬性也被標記爲[RestorableState]。如果您認爲這可能導致它,請讓我知道爲棱鏡嵌入用戶控件MVVM樣式的正確方法。

請注意,我還爲OnRegisterKnownTypesForSerialization設置了覆蓋,併爲我的用戶控件的viewmodel調用了SessionStateService.RegisterKnownType。

回答

1

我能夠將MS示例代碼中的Microsoft.Practices.Prism.StoreApps項目添加到我的解決方案中,而不是從NuGet引用dll。這使我能夠進行調試。最好的我可以告訴問題是,框架的BackStack包含一個複雜對象的過去導航記錄。在這種情況下,事實證明它是一個RoutedEventArgs對象,默認情況下是在那裏,因爲我使用的Core.NavigateToPageAction事件觸發器行爲沒有指定參數。顯然,如果你沒有指定一個參數,它會傳遞一個RoutedEventArgs對象和被點擊的按鈕。只要我將參數設置爲「哇」,它就會停止發生錯誤。

跛腳部分是,這是一個後退按鈕,所以沒有預期的參數:(無論如何,這固定我的問題。

相關問題