在我的应用中,我正在构建自己的媒体播放器。当用户选择要播放的歌曲时,希望能够将链接传递给样本媒体以及与其关联的元数据(艺术家,曲目,专辑艺术等)。我所坚持的部分是如何将所有数据并将其传递到媒体播放器页面。这是我到目前为止所拥有的。
确定选择了哪个项目并将数据添加到查询字符串。
已更新
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);
}
}
我不确定我是否可以使用查询sting将多个片段传递给媒体播放器,或者我是否要做一些不同的事情来将数据传递到另一个页面。我的所有数据都来自使用webclient的网络。谢谢你的帮助。
答案 0 :(得分: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
}