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

时间:2011-11-22 11:28:09

标签: c# wpf listbox media

我在WPF制作媒体播放器。我正在考虑使用列表框控件来播放列表。

我不知道如何绑定点击列表框项目并播放该项目,还让我的播放器对这些项目进行随机播放或重复播放。

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

首先,您可以将ItemSource的{​​{1}}设置为内部ListBox结构,例如包含对您歌曲的引用的IEnumerable。然后将SongList = List<Song>事件处理程序附加到DoubleClick。在双击事件中,ListBox现在应该是您的sender。然后,所选项目(歌曲)应为ListBox。看看这个项目是否在(sender as EventList).SelectedItems[0]中,如果是,请播放它!

您的XAML代码可能如下所示:

SongList

在您的初始化代码中:

<Grid>
    <ListBox Name="songList" MouseDoubleClick="songList_MouseDoubleClick">
        <ListBox.ItemTemplate>
            <DataTemplate>
                <TextBlock Text="{Binding Path=songName}"/>
            </DataTemplate>
        </ListBox.ItemTemplate>
    </ListBox>
</Grid>

事件处理程序:

songList.ItemSource = InternalSongList;

这当然可以通过安全性得到改善,我想这首歌的播放在现实中有点复杂。至于shuffle,选择内部列表索引的随机函数应该可以这样做。重复应该同样简单:计算播放的歌曲并确保没有播放两次歌曲。当所有歌曲播放一次后,清除播放的歌曲列表并重复播放!使用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(); } } } 的好处是您不需要触及IEnumerable那么多,只需设置ListBox并且它处理得非常好。