在另一个窗口中侦听MediaEnded事件

本文关键字:MediaEnded 事件 另一个 窗口 | 更新日期: 2023-09-27 18:27:03

我正在制作一个简单的C#WPF视频播放器应用程序。

我有两个窗口:主窗口(父窗口)包含用于显示视频的MediaElement。PlaylistWindow(子窗口)是包含ListBox的窗口,该ListBox显示appRoot路径中的所有.avi文件。

目前,当我双击ListBox项目时,它会在MainWindow中播放该视频。我想要一个自动播放功能,以便在当前视频结束时自动播放列表中的下一个项目。

我想让PlaylistWindow在MainWindow中监听MediaElement触发的MediaEnded事件,这样我就可以在PlaylistWindow中的ListBox上执行一些操作。

如何从PlaylistWindow订阅MediaEnded事件?

编辑以添加:我最终使用了一种不同的方法,如下所示。我不认为这是最好的方法,但它对我有效。

public partial class MainWindow : Window
{
    PlaylistWindow PLWindow = new PlaylistWindow();
    public MainWindow()
    {
        InitializeComponent();
    }
    private void MainWindow_Loaded(object sender, RoutedEventArgs e)
    {
        PLWindow.Owner = this;
        PLWindow.Show();
    }
    private void videoWindow_Ended(object sender, EventArgs e)
    {
        PLWindow.playNext();
    }
}
public partial class PlaylistWindow : Window
{
    public void playNext()
    {
        if (playListBox.SelectedIndex < playListBox.Items.Count - 1)
        {
            playListBox.SelectedIndex = playListBox.SelectedIndex + 1;
        }
        else { playListBox.SelectedIndex = 0; }
        (Owner as MainWindow).playVideo(playListBox.SelectedValue.ToString());
    }
}

如果可以发布代码示例,我仍然愿意学习如何在PlaylistWindow中收听MediaEnded事件。

在另一个窗口中侦听MediaEnded事件

从主窗口引发自定义.net事件(该自定义事件将由媒体结束事件引发)并在播放列表窗口中订阅,在该事件的事件处理程序中返回下一个.avi文件的文件名