作为播放列表的WPF媒体播放器列表框
本文关键字:媒体播放器 列表 WPF 播放列表 | 更新日期: 2023-09-27 18:15:20
我正在WPF中制作一个媒体播放器。我想使用列表框控制播放列表。
我不知道如何绑定点击列表框中的一个项目并播放该项目,并使我的播放器对这些项目进行洗牌或重复。
有什么建议吗?
首先,您可以将ListBox
的ItemSource
设置为内部IEnumerable
结构,例如包含对您的歌曲的引用的SongList = List<Song>
。然后将DoubleClick
事件处理程序附加到ListBox
。在双击事件中,sender
现在应该是您的ListBox
。选择的项目(歌曲)应该是(sender as EventList).SelectedItems[0]
。看看这个项目是否在你的SongList
中,如果是,玩它!
您的XAML代码可能看起来像这样:
<Grid>
<ListBox Name="songList" MouseDoubleClick="songList_MouseDoubleClick">
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Path=songName}"/>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</Grid>
在初始化代码中:
songList.ItemSource = InternalSongList;
和事件处理程序:
private void songList_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
Controls.ListBox songList = sender as Controls.ListBox;
if (songList.SelectedItems.Count > 0)
{
Song selectedSong = songList.SelectedItems[0];
// To be on the safe side
if (InternalSongList.Contains(selectedSong))
{
selectedSong.Play();
}
}
}
这当然可以通过安全性来改进,我想这首歌的播放在现实中要复杂一点。至于shuffle,一个为内部列表选择索引的随机函数应该可以完成它。重复应该同样简单:计算播放的歌曲,并确保没有歌曲播放两次。当所有歌曲都播放过一次后,清除播放过的歌曲列表并重复播放!使用IEnumerable
的好处是,你不需要触摸ListBox
那么多,只需设置ItemsSource
,它自己处理得很好。