作为播放列表的WPF媒体播放器列表框

本文关键字:媒体播放器 列表 WPF 播放列表 | 更新日期: 2023-09-27 18:15:20

我正在WPF中制作一个媒体播放器。我想使用列表框控制播放列表。

我不知道如何绑定点击列表框中的一个项目并播放该项目,并使我的播放器对这些项目进行洗牌或重复。

有什么建议吗?

作为播放列表的WPF媒体播放器列表框

首先,您可以将ListBoxItemSource设置为内部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,它自己处理得很好。