UWP – Frame仅在传递参数时导航崩溃

我正在尝试将点击的元素的id作为字符串传递给新页面,但应用程序总是崩溃。 我不完全确定如何找出问题的原因,因为我发现的每个例子都使用相同的方法,它对它们起作用。

发件人事件:

private void MovieBox_OnTapped(object sender, TappedRoutedEventArgs e) { var id = (sender as StackPanel).Tag as string; Debug.WriteLine(id); //the correct id in string Frame.Navigate(typeof(MovieDetailsPage),id); } 

OnNavigatedTo事件

 protected override async void OnNavigatedTo(NavigationEventArgs e) { base.OnNavigatedTo(e); string text = e.Parameter as string; Debug.WriteLine(text); await Task.CompletedTask; } 

应用程序在它之间的某处崩溃似乎是。 在第一个事件上设置断点会显示正在发送的正确ID,但它永远不会到达OnNavigatedTo。

我不确定是什么问题,因为如果删除参数,第二页加载就好了。

编辑:我从App.gics文件中写了一个exception:

 Exception thrown: 'Newtonsoft.Json.JsonReaderException' in MovieLibraryApp.exe An exception of type 'Newtonsoft.Json.JsonReaderException' occurred in MovieLibraryApp.exe but was not handled in user code Unexpected character encountered while parsing value: m. Path '', line 0, position 0. 

这里是xaml(它有点混乱): https : //pastebin.com/GkXkxYDS

这个:

 Your parameter must be serializable. If it isn't, then use SessionState 

整个.cs页面,虽然我还没有做任何逻辑,因为我从来没有让参数工作。 MovieDetailsPage.xaml.cs:

 public sealed partial class MovieDetailsPage { public MovieDetailsPage() { InitializeComponent(); NavigationCacheMode = Windows.UI.Xaml.Navigation.NavigationCacheMode.Enabled; } protected override void OnNavigatedTo(NavigationEventArgs e) { base.OnNavigatedTo(e); if (e.Parameter != null) { string text = Convert.ToString(e.Parameter); } } } 

发问者正在使用Template10(在聊天期间了解它),以下是实施导航的最终和更新答案。

对于Template10:

路-1

 using Template10.Services.SerializationService; ... string id = (string)(sender as StackPanel).Tag; string str=SerializationService.Json.Serialize(id); Frame.Navigate(typeof(MovieDetailPage), str); 

WAY-2

 var NavService = NavigationService.GetForFrame(this.Frame); NavService.Navigate(typeof(MovieDetailPage), id);