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

我不确定我是否可以使用查询字符串将多个片段传递给媒体播放器,或者我是否可以做一些不同的事情来将数据传递给另一个页面。我所有的数据都来自使用网络客户端的网络。谢谢您的帮助。

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 回答