【问题标题】:UWP Template10 Frame.Navigate with parameter causes ErrorUWP Template10 Frame.Navigate 参数导致错误
【发布时间】:2016-05-24 23:29:19
【问题描述】:

正在使用 Intense Templates(SplitView 示例)开发 UWP 项目,然后我切换到 Template10(汉堡包)。当我尝试传递参数时似乎有错误

param is string with value something like this - (d5d05a3b-546a-4ca6-a345-74e333fa00fb) Frame.Navigate(typeof(EditPage),param);

错误是这样的: ErrorPicture 然后,如果我的编辑页面无法正确param,它会将用户退回(Frame.GoBack()),现在我收到类似

的错误
An exception of type 'System.Runtime.InteropServices.COMException' occurred in App6.exe but was not handled in user code
Additional information: Error HRESULT E_FAIL has been returned from a call to a COM component.

【问题讨论】:

  • 您好,欢迎来到 Stack Overflow。调试你的代码的口头描述真的很难:) 你能编辑你的问题并添加相关的代码sn-ps,这样我们就可以看到你有什么,然后我们可以提供帮助你调试那个代码。 (不要将代码放在 cmets 中,因为格式很糟糕):)

标签: c# uwp-xaml template10


【解决方案1】:

如果我猜测(并且基于异常字符串),您的问题的根本原因是您正在向您的页面传递一个无法序列化的复杂类型。模板 10 想要序列化您的参数的原因是它可以在您的应用程序暂停后正确恢复您的导航状态。我意识到如果你必须传递一个不可序列化的对象,这很不方便,所以你会发现 BootStrapper.SessionState (一个字典)允许你保存任何类型的对象,只需要你将密钥传递给可以使用 SessionState + 的页面检索对象的那个键。

顺便说一句,这是一个很棒的模式,当然不是模板 10 独有的模式。我唯一要添加的就是您假设字典中缺少该对象并包含防御性代码来处理这种情况也。原因是,如果您的应用程序已暂停,则可能会发生这种情况。

我希望这是有道理的。而且,不要难过。你肯定不是第一个问这个问题的人。

var key = nameof(MyObject);
SessionState.Add(key, MyObject);
NavigationService.Navigate(typeof(Views.MainPage), key);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-19
    相关资源
    最近更新 更多