2010-12-29 12 views
2

グリーティング、NavigationService.Navigateでクエリ文字列変数を渡すにはどうすればよいですか?

検索されましたが、運がありません。

私は、Silverlight 4アプリケーションでクエリ文字列変数を渡し(そして検索する)のを試みています。まず私は、この

this.NavigationService.Navigate(new Uri("/LoanProductionRegion?Elvis=Alive&ImHungry=true", UriKind.Relative)); 

を試してみました。しかし、彼らは(完全なURLがhttp://localhost:1076/Dashboard.SLTestPage.aspx#/LoanProductionRegion?Elvis=Alive&ImHungry=trueのように見える)アンカーの後に来るのでHtmlPage.Document.QueryStringはそれらをピックアップしません。

私は、このような

this.NavigationService.Navigate(new Uri("?Elvis=Alive&ImHungry=true/LoanProductionRegion", UriKind.Relative)); 
    this.NavigationService.Navigate(new Uri("/?Elvis=Alive&ImHungry=true/LoanProductionRegion", UriKind.Relative)); 

しかし、「ページが見つかりません」エラーの両方の結果として、前にVARSを入れてみました。誰が私が何を達成する方法を知っていますか?

+0

これをチェックしましたか?http://blogs.msdn .com/b/dphill/archive/2009/04/28/silverlight-navigation-part-3.aspx –

+0

@Aaron:以前はなく、ありがとう。しかし、単純なことでなければならないもののためにかなり重い義務があるようだ。そのブログを見ると、私にはアイデアが与えられました。ハッキーですが、OnNavigatedToメソッドのNavigationEventArgsからUriを取り出し、自分自身を解析することができます。 –

答えて

2

ページでOnNavigatedToメソッドを使用して、this.NavigationContext.QueryString ["Elvis"](または好きなような他のパラメータ名)を調べることができます。

NavigationContext(NavigationServiceとよく似ています)は、OnNavigatedToが呼び出された時点で初期化されることが保証されているため、ほとんどの場合、これを調べるのに最も便利な時間です。

NavigationContext.QueryStringは、クエリ文字列のキーと値のペアを事前に解析した単なるIDictionaryです。そのため、IDictionaryで期待することは何でもできます。何かが存在するかどうかを確認するためにContainsKeyを使用し、foreachループなどで繰り返し処理します。

+0

ニース!ありがとう。自分自身を解析する必要はありません。 –

関連する問題