OnNavigatedTo没有填充字符串,为什么?

时间:2014-01-05 02:32:23

标签: c# windows-phone windows-phone-7.1

这是有效的,我不知道为什么它会停止。

我的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"]);

任何指针或后续步骤表示赞赏!但最重要的是,为什么这不起作用?

1 个答案:

答案 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);

}