【发布时间】:2014-08-17 06:33:29
【问题描述】:
我正在玩一个音乐播放器应用程序,并将播放列表存储在一个列表中。 这显示在 LongListSelector 中,其中包含带有图像和两个文本块的 StackPanel:
<DataTemplate x:Key="playlistItemTemplate">
<StackPanel Orientation="Horizontal">
<Image Height="80" Width="80" Margin="0,0,10,0" Source="/Assets/stop.png" Tap="removeSong_Tap" />
<StackPanel VerticalAlignment="Center" Orientation="Horizontal" >
<StackPanel Orientation="Vertical">
<TextBlock Text="{Binding Name}" FontSize="22" VerticalAlignment="Center" HorizontalAlignment="Left" />
<TextBlock Text="{Binding Artist}" Style="{StaticResource PhoneTextSubtleStyle}" VerticalAlignment="Center" HorizontalAlignment="Left" />
</StackPanel>
</StackPanel>
</StackPanel>
</DataTemplate>
当用户单击图像时,我想从列表中删除选定的歌曲。 我正在使用以下代码:
private void removeSong_Tap(object sender, System.Windows.Input.GestureEventArgs e)
{
int selectedIndex = playlistList.ItemsSource.IndexOf(playlistList.SelectedItem as ItemViewModel);
if (selectedIndex == Data.currentSongNo)
{
if (Data.currentSongNo == Data.playList.Count - 1) //last song in the playlist
{
MediaPlayer.Stop();
}
else
{
playNextSong();
}
removeSongFromPlaylist(selectedIndex);
}
}
但是每次我点击图片时,SelectedItem 都会显示为 null,这意味着 selectedIndex 设置为 -1
我也尝试过使用:
int selectedIndex = App.ViewModel.Items.IndexOf(playlistList.SelectedItem as ItemViewModel);
但这具有相同的结果。
任何想法我做错了什么?
【问题讨论】:
-
尝试使用
playlistList.Items而不是ItemsSource -
谢谢,但代码似乎不喜欢那样。另外我遇到的问题是 playlistList.SelectedItem 为空
-
出于兴趣,我从这里得到了原始代码sn-p:stackoverflow.com/questions/16514074/…
-
尝试使用 LongListSelector 的 SelectionChanged 事件!
-
我不认为这会有所帮助,因为我只想在用户点击歌曲标题旁边的 [X] 图像时运行点击事件
标签: c# xaml windows-phone-7 windows-phone-8 windows-phone