none
调试挂起状态时,出现异常 RRS feed

  • 问题

  • 调试挂起状态时,出现异常,异常信息如下:GetNavigationState doesn't support serialization of a parameter type which was passed to Frame.Navigate.

    这个问题怎么解决啊

    2012年8月6日 8:00

答案

全部回复

  • 我问过这个问题了,是因为你的NavigateTo中包含了不能被序列化的参数。 把这个参数改成另一种方式传递就可以了。

    http://social.msdn.microsoft.com/Forums/zh-CN/metroappzhcn/thread/fe5ba3df-e90d-4a50-8823-7592fe41a53c

    2012年8月6日 8:05
  • 我所有传递的参数都是经过[DataContract]标记的,

    http://social.msdn.microsoft.com/Forums/zh-CN/metroappzhcn/thread/fe5ba3df-e90d-4a50-8823-7592fe41a53c

    这个是国外网站的关于这个问题的回复,据说这是一个bug

    2012年8月6日 8:36
  • Hi,

    这个你需要手动的进行序列化。你可以参考这个帖子的做法,[DataContract]代表类型对象可以被传送,还需要设置[DataMember]:

    http://social.msdn.microsoft.com/Forums/en-US/winappswithcsharp/thread/46b19d4a-60a6-48d3-875d-1ce00993760d

    Hope this helps


    Aaron Xue [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2012年8月7日 2:27
    版主
  • 手动序列化的话肯定可以,我已经试过了。但是既然这样为什么要把paramater设置成object 类型的,直接弄成只能传递string类型的不就可以了吗?我觉得这个问题应该是一个bug
    ,序列化和反序列化微软完全可以把这两个步骤自动做掉的,只要传递的对象是经过[DataContract]和[DataMember]标记过的完全可以被序列化的,而现在竟然要手动的序列化和反序列化,这样岂不是传递的参数只能是string类型的?
    • 已编辑 龚海伟 2012年8月7日 3:08 补充
    2012年8月7日 3:03
  • 因为传递一个Object参数即使很复杂,但是另一个页面也能够接到,问题只是在存储状态的时候出现。因此不能将传递的参数设置为String类型。

    Frame.GetNavigationState只能够序列化 numbers, characters, strings, guids and boolean。其他的可能需要你自己手动的序列化。而且我查了一下没有发现不能够序列化的类,所以这个步骤你自己做就可以了也不是很麻烦。至于为什么不自动做可能是有设计上的考虑,这个问题讨论的很多。


    Aaron Xue [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2012年8月7日 6:29
    版主