我正在WPF中製作媒體播放器。我正在考慮使用列表框控件播放列表。作爲播放列表的WPF媒體播放器列表框
我不知道如何綁定點擊列表框中的某個項目並播放該項目,也可以讓我的播放器對這些項目進行隨機或重複操作。
有什麼建議嗎?
我正在WPF中製作媒體播放器。我正在考慮使用列表框控件播放列表。作爲播放列表的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();
}
}
}
這當然也可以有改善安全性,我想這首歌的演奏在現實中會更復雜一些。至於洗牌,爲您的內部列表選擇一個索引的隨機函數應該可能做到這一點。重複應該同樣簡單:計數播放的歌曲並確保沒有歌曲播放兩次。當所有歌曲播放一次後,清除播放的歌曲列表並重復播放!使用IEnumerable
的好處是,您不需要觸摸ListBox
那麼多,只需設置ItemsSource
,它就可以很好地處理它自己。
這個[link](http://stackoverflow.com/questions/2224435/playlist-for-wpf-mediaelement-app)沒有解決我的問題 – HomeMade
你的內部歌曲結構如何看待這一刻?如果它是'IEnumerable',請參閱我的回答以獲得建議。 – Tobbe