这是有效的,我不知道为什么它会停止。
我的mainPage.xaml具有以下代码来打开新页面:
private void listBox1_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
string fileNotRead = listBox1.SelectedItem.ToString() + ".txt";
MessageBox.Show("on Main: " + fileNotRead);
NavigationService.Navigate(new Uri("/pickIt.xaml?arr=" + fileNotRead, UriKind.Relative));
}
在第二个表格中,我有以下
protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
{
base.OnNavigatedTo(e);
string fileToOpen = string.Empty;
MessageBox.Show("Navigation received");
if (NavigationContext.QueryString.TryGetValue("arr", out fileToOpen))
{
param = fileToOpen;
MessageBox.Show("On Pick: " + fileToOpen);
}
param = fileToOpen;
}
param是一个公共字符串,我尝试了几种不同的方法。
我没有得到内部最多的messageBox来显示TryGetValue是否成功,如果我尝试使用Param,我会得到ArgumentNullException(正如预期的那样)。
此外,目前的TryGetValue是新的,但仅仅是因为我最初的方法是神秘地破坏了。最初的方法是:
param = Uri.UnescapeDataString(NavigationContext.QueryString["arr"]);
任何指针或后续步骤表示赞赏!但最重要的是,为什么这不起作用?
答案 0 :(得分:0)
试试这个
第一页
private void listBox1_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
string fileNotRead = (listBox1.SelectedItem as ListBoxItem).Content.ToString()+ ".txt";
MessageBox.Show("on Main: " + fileNotRead);
NavigationService.Navigate(new Uri("/pickIt.xaml?arr=" + fileNotRead, UriKind.Relative));
}
第二页
protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
{
string fileToOpen = null;
bool availability= NavigationContext.QueryString.Keys.Contains("arr");
if (availability)
{
fileToOpen = NavigationContext.QueryString["arr"];
MessageBox.Show("On Pick: " + fileToOpen);
}
else {
MessageBox.Show("Data Not Available");
}
base.OnNavigatedTo(e);
}