トップ回答者
SilverlightでQueryStringを処理する方法について

質問
-
Silverlightでハイパーリンクを作成し、それをクリックしたら、次のような文字列を獲得するような
プログラムを作成しました。
http://localhost:1345/dg3371TestPage.aspx?staff_id=1007&staff_date=2011/10/03この文字列から、staff_id と staff_date の2つの変数の値(1007, 2011/10/03)を抜き出す簡単な
方法はありませんでしょうか?
リンク先で、IDictionary<string,string> qString = System.Windows.Browser.HtmlPage.Document.QueryString;
という手もありますが、リンク先で処理をせずに、得られた文字列を処理して、画面遷移を
行なわせたいと考えています。
画面遷移は、下記のサイトを参考に行なっております。
Silverlight 2 で大きく変わったコントロール -- 「画面遷移について」
http://codezine.jp/article/detail/3427?p=32011年10月13日 3:22
回答
-
どのように組まれているのかわかりませんが、例えばDataGridにTextBlockで文字列を表示し、そこをクリックしたらMouseLeftButtonUpイベントハンドラで、senderをTextBlockにキャストし、そのDataContextプロパティでバインドしているデータを取得することができます。あとはそのデータによって遷移先を切り分けることが可能です。これをC#で書けば以下のような感じになります。
var model = (バンドしているクラス名)((TextBlock)sender).DataContext;
★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/- 回答としてマーク kawata_sotaro 2011年10月13日 7:37
2011年10月13日 5:32モデレータ
すべての返信
-
trapemiya様
ご返事いただきましてありがとうございます。
もとはASP.NETで書いていたので、そのときに、ハイパーリンクでQueryStringとしてデータを渡して、
ページ遷移を実現していました。
Silverlightで作り直したときに、それを踏襲しただけということと、ハイパーリンクにした方が、そこから
QueryStringの各変数を抜き出すライブラリが利用できるかなと思っただけです。
DataGridのセルをクリックして、そこからそのセルの状態に応じたページへ遷移できることができれば、
ハイパーリンクにする必要はありませんが、ハイパーリンクが一番楽な方法かなと思いました。
良い方法があれば、ご教示ください。2011年10月13日 4:56 -
どのように組まれているのかわかりませんが、例えばDataGridにTextBlockで文字列を表示し、そこをクリックしたらMouseLeftButtonUpイベントハンドラで、senderをTextBlockにキャストし、そのDataContextプロパティでバインドしているデータを取得することができます。あとはそのデータによって遷移先を切り分けることが可能です。これをC#で書けば以下のような感じになります。
var model = (バンドしているクラス名)((TextBlock)sender).DataContext;
★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/- 回答としてマーク kawata_sotaro 2011年10月13日 7:37
2011年10月13日 5:32モデレータ -
ご教示いただいたように、データバインドを使用して、DataContextでデータを設定・取得
するようにしましたら、文字列を操作する必要は無くなり、シンプルにまとまりました。どうもありがとうございました。m(__)m
P.S. バインディングの詳しいところは、このサイトを参考にいたしました。
「Silverlight 2でのデータバインディング」
http://codezine.jp/article/detail/3517- 編集済み kawata_sotaro 2011年10月13日 7:59
2011年10月13日 7:52