我在我的UWP项目中使用Template10。在导航时传递参数时,我可以在OnNavigated(NavigationEventArgs e)上接收我的对象的序列化文本。
这是因为在调用Navigate方法时,Template10导航服务序列化了该对象。我是否必须每次都将deserailize传递给导航服务。还有其他选择吗?
答案 0 :(得分:2)
您需要自行反序列化
protected override void OnNavigatedTo(NavigationEventArgs e)
{
string myString = Template10.Services.SerializationService.SerializationService.Json.Deserialize<string>(e.Parameter?.ToString());
}
为您完成反序列化;只需将parameter
对象强制转换为预期的Type。
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);
对于大块数据,您可以寻求替代解决方案,例如会话缓存或类似的东西。