Windows10应用开发:挂起导航出错:
GetNavigationState doesn't support serialization of a parameter type which was passed to Frame.Navigate
查了许多资料都没解决,看来只能靠自己了,在一段时间大排查之后,终于找到了原因。
首先,说明一下这个异常出现的地方,应用场景:
场景:
我们在对应用进行挂起,关闭的时候,有时候需要让导航记住当前的页面,当下次打开应用的时候,能恢复到上次关闭应用的页面。
此时,我们需要在APP.xaml.cs文件里的OnSuspending 方法里面,调用 GetNavigationState()方法 保存当前页面。
在OnLaunched 方法里面,进行恢复操作。具体如下:这个方法在程序打开时会调用。
实现的就是这样一个功能。
而异常就发生在图中红色标记的地方。
其实,这个异常是说: 导航到这个页面的时候,在挂起时,里面的参数不能被GetNavigationState方法序列化!、
那么为什么不能被序列化呢?
答案:
原因就是 我从主页面导航到第二个页面的时候,附带了一个不能被序列化的参数!当导航到第二个页面再执行挂起时,这个参数不能别序列化,从而报了异常!
详细如下:
这是在主页面像第二个页面导航的时候,我为了在第二个页面得到主页面的数据,于是,把这两个数据用ValueSet 类保存。(ValueSet类实现的是IDictionary 接口,是以键值对的方式进去存储的,(与处无关)) 导航到第二个页面的时候传了过去。
所以这个类型是不能被序列化的。从而报异常。问题终于找到了!希望大家在开发的过程中遇到这个问题可以迅速的得到解决!欢迎加群 193148992 共同学习交流。