1

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

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

错误是这样的: ErrorPicture 然后如果我的编辑页面无法获得正确的参数,它会将用户发送回(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.
4

1 回答 1

1

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

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

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

var key = nameof(MyObject);
SessionState.Add(key, MyObject);
NavigationService.Navigate(typeof(Views.MainPage), key);
于 2016-05-24T15:28:40.463 回答