然後按照: Saving and Restoring State in a Windows 8 XAML App 提供的操作方式
1.在 App 的 OnLaunched 加入
SuspensionManager.RegisterFrame(rootFrame, "AppFrame");
2.在 App 的 OnSuspending 加入
await SuspensionManager.SaveAsync();
記得 OnSuspending 要 async
3.在 App 中的 OnLaunched 判斷
if (e.PreviousExecutionState == ApplicationExecutionState.Terminated)
{
await SuspensionManager.RestoreAsync();
}
錯誤的位置是
private static void SaveFrameNavigationState(Frame frame)
{
var frameState = SessionStateForFrame(frame);
frameState["Navigation"] = frame.GetNavigationState();
}
的 frame.GetNavigationState();
錯誤訊息是說這個東西不能序列化 Frame.Navigate 丟過來的參數 (看了半天才弄懂,英文大退化還是沒睡飽啊我 0rz 0rz 0rz)
Frame.Navigate(TypeName, Object) method
寫到這邊又發現....
上面的超連結下面的詳細說明,是有說明 Object 有限制那些項目的
Parameters
- sourcePageType
Type: System.Type [.NET] | TypeName [C++]The page to navigate to, specified as a type reference to its partial class type. (A type reference is given asSystem.Type for .NET, or a TypeName helper struct for C++/CX).- parameter
Type: System.Object [.NET] | Platform::Object [C++]The navigation parameter to pass to the target page; must have a basic type (string, char, numeric, or GUID) to support parameter serialization using GetNavigationState.
但我傳進去的東西,是一個在專案裡面自訂的物件,無法支援序列化,所以在存的時候就炸了 0rz
知道是這個問題,就好解了,把物件用 Json.Net 序列化成字串再丟進去,進到目標頁面之後再轉回原本的物件型態即可~~!
打完收工 = =
為了剛開始急著要寫出所有功能,還沒完全做好功課就開始亂寫一通
結果昨天還了一整天的債 0rz
知道是這個問題,就好解了,把物件用 Json.Net 序列化成字串再丟進去,進到目標頁面之後再轉回原本的物件型態即可~~!
打完收工 = =
為了剛開始急著要寫出所有功能,還沒完全做好功課就開始亂寫一通
結果昨天還了一整天的債 0rz
沒有留言:
張貼留言