如何使用按钮在此C#应用程序中将字符串从一个页面传递到另一个页面?

时间:2011-12-15 01:33:08

标签: c# windows-phone-7

在我的MainPage.xaml:区域中,btu在按钮功能中有值,我将它们更改为字符串。

private void button1_Click(object sender, RoutedEventArgs e)        
{       
    ...

    area.ToString();

    btu.ToString();

    NavigationService.Navigate(new Uri("/SolutionPage.xaml?msg1=" + area, UriKind.Relative));
     NavigationService.Navigate(new Uri("/SolutionPage.xaml?msg2=" + btu, UriKind.Relative));

}

然后,在page1.xaml中,我有:

protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
{
    base.OnNavigatedTo(e);
    string msg1 = "";
    if (NavigationContext.QueryString.TryGetValue("msg1", out msg1))
    {
        textBlock1.Text = String.Format("Area:{0}", msg1);
    }
    base.OnNavigatedTo(e);
    string msg2 = "";
    if (NavigationContext.QueryString.TryGetValue("msg2", out msg2))
    {
        textBlock2.Text = String.Format("BTU:{0}", msg2);
    }
}

问题是只有textBlock1更改(Area)。 如何将btu.ToString()传递给textBlock2.text?

2 个答案:

答案 0 :(得分:0)

您应该进行一次导航请求,并将两个值附加到其中。

string url = string.Format("/SolutionPage.xaml?msg1={0}&msg2={1}", area.toString(), btu.toString());
NavigationService.Navigate(new Uri(url, UriKind.Relative));

在您的OnNavigatedTo中,只需拨打一次基本版本。

答案 1 :(得分:0)

您只能拨打Navigate一个电话。因此,您需要将这两个参数传递给导航调用,例如

new Uri( "/SolutionPAge.xaml?msg1=blah&msg2=blah", UriKind.Relative);

然后通过一次调用OnNavigatedTo

将其解析

如果只有一个更改,则只传递查询字符串中的其中一个值。