Я пишу приложение для воспроизведения потоковой музыки. В приложении у меня есть много списков (список рейтинга, список результатов поиска, выделение списка песен .....), каждый список имеет тот же набор данных, который я привязываю к LongListSelector для каждой страницы. Поэтому я использую этот DataTemplate как ресурсы и поместить его в app.xamlПолучить родительский ObservableCollection, который выбран Item - WP8
<DataTemplate x:Key="BasicVideoTemplate">
<Grid Tap="ChangeSong_Tap" RowsAuto="50,50" ColumnsAuto="150,*" Background="White" Margin="5,0,5,10">
<Grid.ColumnDefinition>
<ColumnDefinition Width = "150"/>
<ColumnDefinition Width = "*"/>
</Grid.ColumnDefinition>
<Grid.RowDefinition>
<RowDefinition Height = "50"/>
<RowDefinition Height = "50"/>
</Grid.RowDefinition>
<Border BorderThickness="1" BorderBrush="Black" Grid.RowSpan="2" Grid.Column="0" VerticalAlignment="Center" Margin="5,0,5,0">
<Image Source="{Binding Cover}"/>
</Border>
<TextBlock Text="{Binding Name}" Grid.Row="0" Grid.Column="1" Style="{StaticResource BlackTextBlock}" Margin="5,0,0,0"/>
<TextBlock Text="{Binding Artist}" Grid.Row="1" Grid.Column="1" Foreground="Black" Margin="5,0,0,0"/>
<!-- .............. -->
</Grid>
</DataTemplate>
И этот код (который я поставил в App.xaml.cs), чтобы выбрать песню из списка, создать аудиодорожки из этого пункта и навигации в playSongPage:
private void ChangeSong_Tap(object sender, System.Windows.Input.GestureEventArgs e)
{
var item = (SongItemModel)(sender as FrameworkElement).DataContext;
App.Model.ChangeSong(item.Id); /// this code will create a audio track for this item
(Application.Current.RootVisual as PhoneApplicationFrame).Navigate(new Uri("/Pages/DetailSongPage.xaml", UriKind.Relative));
}
Проблема здесь в том, что я должен создать список < AudioTrack> для моего плейлиста, так как я могу получить родительский список щелкнули пункта и добавить его в список < AudioTrack>, в то время как все этот код был помещен в app.xaml.cs ???
Так SelectionChanged получите весь список как itemsoures? Большое спасибо: D – user3448806
Да, «longlistselector» - это тот, который поднимает событие. поэтому вы можете просто взять его у отправителя. –
слишком долго искали слишком простой способ - thnx – XikiryoX