2012-04-26 8 views
1

私のアプリでは、自分のメディアプレーヤーを構築しています。ユーザーが再生する曲を選択すると、サンプルメディアとそれに関連付けられているメタデータ(アーティスト、トラック、アルバムアートなど)にリンクを渡すことができるようにするために、私が執着している部分は、データをメディアプレーヤーページに渡します。ここに私がこれまで持っていたものがあります。ページ間に複数のデータを渡すWP7

選択したアイテムを特定し、クエリ文字列にデータを追加します。私はメディアに複数の部分を渡すために、クエリ刺さを使用できるかどうかわからないクエリ文字列

 protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e) 
    { 
     base.OnNavigatedTo(e); 

     string releaseName = String.Empty; 
     string releaseImg = String.Empty; 
     string releaseUrl = String.Empty; 

     if (NavigationContext.QueryString.TryGetValue("releaseUrl", out releaseUrl)) 
     { 
      sampleMedia.Source = new Uri(releaseUrl, UriKind.Absolute); 
     } 
    } 

からデータをプルする方法OnNavigatedTo

public void musicSampleSelectedHandler(object sender, RoutedEventArgs e) 
    { 
     Track selected = (sender as Image).DataContext as Track; 
     ListBoxItem pressedItem = this.listReleaseMain.ItemContainerGenerator.ContainerFromItem(selected) as ListBoxItem; 
     if (pressedItem != null) 
     { 
      string _rT = selected.title; 
      string _rN = selected.release.name; 
      //string _rA = selected.artists; ???? 
      string _rI = selected.images.large.url; 
      string _rS = selected.sampleUrl; 

      this.NavigationService.Navigate(new Uri("/Pages/MediaPage.xaml?releaseName=" + _rN + "&releaseTrack=" + _rT + "&releaseImage=" + _rI 
       + "&releaseSample=" + _rS, UriKind.Relative)); 
     } 
    } 

を更新し

他のページにデータを渡すために何か違うやり方をすればいいのです。私のすべてのデータは、Webクライアントを使用してWebから送られます。助けてくれてありがとう。

答えて

3

QueryStringは、Uriを介して渡されたパラメータの単なる辞書です。 Uriは、&で区切られたパラメータを渡す標準的な構文を使用します。

this.NavigationService.Navigate(new Uri("/Pages/MediaPage.xaml?releaseUrl=" + releaseUrl + "&releaseImg=" + releaseImg , UriKind.Relative)); 

その後、あなたが何か使ってこれを解析することができます:あなたはのようなものを持っていたのであれば、あなたの例では、//:

また
if (NavigationContext.QueryString.TryGetValue("releaseUrl", out releaseUrl)) 
{ 
    sampleMedia.Source = new Uri(releaseUrl, UriKind.Absolute); 
} 

if (NavigationContext.QueryString.TryGetValue("releaseImg", out releaseImg)) 
{ 
    // do something with releaseImg 
} 
+1

を、あなたは、MSDNのドキュメント(HTTPを見つけることができますmsdn.microsoft.com/en-us/library/system.windows.navigation.navigationcontext.querystring(v=vs.95).aspx)。 – nithins

+1

それはうまくいった。どうもありがとう! – nos9

+0

もう一度質問していただければ幸いです。 'Artists'は' Tracks'クラス内のコレクションであることを忘れていました。私はそれを次のページに渡すことができるように、そのデータをどのように取得するのですか?複数のアーティストがいる場合は特にですか?上記の私の更新されたコードを見てください。ありがとう – nos9

関連する問題