如何使用wpf将mp3歌曲添加到列表框?

如何使用wpf将mp3歌曲添加到列表框?,wpf,listbox,controls,mediaelement,Wpf,Listbox,Controls,Mediaelement,我的解决方案资源管理器中有音乐文件夹。然后我想将该歌曲添加到列表框控件,然后我想使用wpf在媒体元素中播放列表框中选定的歌曲? 请帮帮我。 谢谢 您应该实现业务逻辑来浏览目标目录。准备一组物品。将这些绑定到列表框 要播放歌曲,请将选定项绑定到MediaElement 如果您还需要进一步的帮助,我将尝试编译一些简单的解决方案并进行更新 更新简单解决方案: Xaml: 代码隐藏: public partial class Window1 : Window { ObservableCol

我的解决方案资源管理器中有音乐文件夹。然后我想将该歌曲添加到列表框控件,然后我想使用wpf在媒体元素中播放列表框中选定的歌曲?
请帮帮我。 谢谢

  • 您应该实现业务逻辑来浏览目标目录。准备一组物品。将这些绑定到列表框
  • 要播放歌曲,请将选定项绑定到MediaElement
如果您还需要进一步的帮助,我将尝试编译一些简单的解决方案并进行更新

更新简单解决方案:

Xaml:


代码隐藏:

public partial class Window1 : Window {
    ObservableCollection<string> mFileList;

    public Window1 () {
        InitializeComponent ();
        GetFiles(@"..\songs");

        this.DataContext = mFileList;

    }

    private void GetFiles (string folderPath) {
       string[] files = Directory.GetFiles(folderPath);
       mFileList = new ObservableCollection<string> (files);
    }

}
公共部分类窗口1:窗口{
可观察收集文件列表;
公共窗口1(){
初始化组件();
获取文件(@“.\songs”);
this.DataContext=mFileList;
}
私有void GetFiles(字符串folderPath){
string[]files=Directory.GetFiles(folderPath);
mFileList=新的ObservableCollection(文件);
}
}

要在点击按钮时显示播放行为,请参考以下内容:

Xaml:

<MediaElement x:Name="media" Source="{Binding   
             ElementName=listbox,Path=SelectedItem}" 
             LoadedBehavior="Manual" UnloadedBehavior="Manual"/> 
 <Button Click="Button_Click" Height="27" VerticalAlignment="Bottom"   
         HorizontalAlignment="Left" Width="62">Play</Button>
您需要按如下方式处理mediaended事件:-
代码隐藏:-
`私有无效媒体(对象发送方,路由目标){
if(listbox.SelectedIndex
您需要按如下方式处理mediaended事件:-
私有无效媒体(对象发送方,路由目标){
if(listbox.SelectedIndex
谢谢你的建议。我需要代码片段。请帮助我。我有一个要求,我需要使用wpf在窗口上播放多首音频歌曲。有人能建议实现这一点的最佳方法吗。我有窗口。我将在那里显示列表框中的歌曲列表。用户应该能够从列表框中选择多首歌曲,然后单击play、 我必须逐个播放用户选择的所有音频歌曲。我将感谢您的帮助。据我所知,Media Element不支持内置列表。但无需担心。您可以维护自己的收藏或所选项目列表。Media Element在播放完当前歌曲后将触发“MediaEnded”事件。只需capt录制此活动并播放下一首歌曲,直到收藏中有可用歌曲为止
<MediaElement x:Name="media" Source="{Binding   
             ElementName=listbox,Path=SelectedItem}" 
             LoadedBehavior="Manual" UnloadedBehavior="Manual"/> 
 <Button Click="Button_Click" Height="27" VerticalAlignment="Bottom"   
         HorizontalAlignment="Left" Width="62">Play</Button>
private void Button_Click (object sender, RoutedEventArgs e) {
       media.Play ();
}
You need to handle the mediaended event as below :-

<MediaElement x:Name="media" Source="{Binding ElementName=listbox,Path=SelectedItem}"   MediaEnded="media_MediaEnded"
                 ></MediaElement>

Codebehind :-
` private void media_MediaEnded (object sender, RoutedEventArgs e) {
        if (listbox.SelectedIndex < listbox.Items.Count - 1) {
            listbox.SelectedIndex = listbox.SelectedIndex + 1;
        }`
You need to handle the mediaended event as below :-     
<MediaElement x:Name="media" Source="{Binding ElementName=listbox,Path=SelectedItem}" Margin="0,119,78,64"  MediaEnded="media_MediaEnded"
                 ></MediaElement>

   private void media_MediaEnded (object sender, RoutedEventArgs e) {
        if (listbox.SelectedIndex < listbox.Items.Count - 1) {
            listbox.SelectedIndex = listbox.SelectedIndex + 1;
        }

    }