导航参数是复杂对象时挂起后应用程序崩溃

时间:2013-01-19 20:26:19

标签: c# silverlight windows-store-apps

我正在使用Windows 8应用程序(Windows应用商店应用程序)。我有一个包含两个导航参数的页面:

if (navigationParameter is int)
{
     BindByBoxId(navigationParameter);
}
else if (navigationParameter is Word)
{
     BindByWordObject(navigationParameter as Word);
}

当应用程序进入包含整数作为导航参数的页面时,应用程序进入挂起模式后一切正常,但是,当导航参数是单词对象(复杂对象)时,应用程序在{{1}时崩溃事件处理程序运行。

通过调查OnSuspending类中以下部分代码中的问题:

SuspensionManager

问题是`GetNavigationState。 MSDN中方法的描述提到了这样一个事实:

  

注意这些方法使用的序列化格式仅供内部使用。您的应用不应与其形成任何依赖关系。此外,此格式仅支持基本类型(如字符串,字符,数字和GUID类型)的序列化。

请告诉我如何解决我的问题。

1 个答案:

答案 0 :(得分:1)

我意识到这已经很晚了,但这是未来问题的解决方案:

您需要自己序列化对象。您可以使用类似DataContractSerializerXmlSerializer或Json.NET等众多优秀库之一的内容。然后,保存的对象只是一个字符串。在加载状态下,你反序列化字符串,你很高兴。