2012-04-26 2 views
1

В моем приложении я создаю свой собственный медиаплеер. Когда пользователь выбирает песню для воспроизведения, которая хочет передать ссылку на образец носителя и связанные с ним метаданные (Artist, Track, Album Art и т. Д.). Часть, на которую я застрял, - это объединение всех данных и передать их на страницу медиаплеера. Вот что я до сих пор.WP7 передаёт несколько фрагментов данных между страницами

Определите, какой элемент был выбран, и добавьте данные в строку запроса.

ОБНОВЛЕНО

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

Я не уверен, если я могу использовать жало запроса передать несколько штук в средствах массовой информации плеер, или если я сделаю что-то другое, чтобы передать данные на другую страницу. Все мои данные поступают из Интернета с помощью веб-клиента. Спасибо за помощь.

ответ

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

Еще один вопрос, если вы не возражаете. Я забыл, что «Художники» - это коллекция в классе «Треки». Как мне получить эти данные, чтобы я мог передать его на следующую страницу, особенно если есть более одного художника? см. мой обновленный код выше. спасибо – nos9

Смежные вопросы