1

私のアプリでは、独自のメディアプレーヤーを構築しています。ユーザーが再生する曲を選択したときに、サンプルメディアへのリンクとそれに関連付けられたメタデータ(アーティスト、トラック、アルバムアートなど)を渡せるようにしたい場合、私がこだわっているのは、すべてをグループ化する方法です。データをメディアプレーヤーページに渡します。これが私がこれまでに持っているものです。

選択されたアイテムを特定し、クエリ文字列にデータを追加します。

更新しました

    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));
        }
    }

クエリ文字列からデータを引き出すOnNavigatedToメソッド

        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);
        }
    }

クエリスティングを使用して複数のピースをメディアプレーヤーに渡すことができるかどうか、またはデータを他のページに渡すために別のことを行うことができるかどうかはわかりません。私のデータはすべて、Webクライアントを使用してWebから取得されます。助けてくれてありがとう。

4

1 に答える 1

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
} 
于 2012-04-26T03:03:34.380 に答える