我正在为我的 UWP 项目使用 Template10。在导航时传递参数时,我可以在 OnNavigated(NavigationEventArgs e) 处接收对象的序列化文本。
这是因为在调用 Navigate 方法时,Template10 导航服务会序列化对象。每次将参数传递给导航服务时,我是否必须脱轨。有没有其他选择?
我正在为我的 UWP 项目使用 Template10。在导航时传递参数时,我可以在 OnNavigated(NavigationEventArgs e) 处接收对象的序列化文本。
这是因为在调用 Navigate 方法时,Template10 导航服务会序列化对象。每次将参数传递给导航服务时,我是否必须脱轨。有没有其他选择?
你需要反序列化自己
protected override void OnNavigatedTo(NavigationEventArgs e)
{
string myString = Template10.Services.SerializationService.SerializationService.Json.Deserialize<string>(e.Parameter?.ToString());
}
反序列化已为您完成;只需将parameter
对象转换为预期的类型。
public override Task OnNavigatedToAsync(object parameter, NavigationMode mode, IDictionary<string, object> state)
{
string myString = parameter?.ToString();
}
请记住,您可以序列化到导航服务中存在数据大小限制(大约 8kb?)。
Template10.Common.BootStrapper.Current.NavigationService.Navigate(typeof(PageToNavigateTo), objectToSerialize);
[Template10.MvvM.ViewModelBase.]NavigationService.Navigate(typeof(PageToNavigateTo), objectToSerialize);
对于大量数据,您必须寻求替代解决方案,例如会话缓存或类似的东西。