2011-12-15 7 views
0

私のMainPage.xaml:areaとbtuにはボタンの機能の中に値があり、それらを文字列に変更しました。このC#アプリケーションでボタンを使用して、あるページから別のページに文字列を渡すにはどうすればよいですか?

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変化(エリア)。 btu.ToString()をtextBlock2.textに渡すにはどうすればよいですか?

答えて

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

ありがとうございます。しかし、それは(新しいUri、Urikind.Relative))でなければなりません。 – user1098964

+0

ああ、それは新しいUri(url、UriKind.Relative)でなければなりません。一定。 –

0

Navigateを1回だけ電話するだけです。だから、

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

のように、ナビゲートコールにこれらのparamsの両方に合格して、唯一の変更は、ただ一つだけのを渡す場合OnNavigatedTo

に1回の呼び出しで離れてそれを解析する必要があるとしていますクエリ文字列の値。

+0

blahは変数でなければなりません。答えがArea:area、それは変数としてnoをテキストとして取ります。私は連結を試みたが動作しませんが、ありがとう – user1098964

関連する問題