c# - 在另一个窗口中监听 MediaEnded 事件

标签 c# wpf events window mediaelement

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

我有 2 个 Windows:MainWindow(父窗口)包含用于显示视频的 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 事件。

最佳答案

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

关于c# - 在另一个窗口中监听 MediaEnded 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9596118/

相关文章:

c# - JSonConverter 如何进行泛型反序列化

wpf - Ninject:解决二级内部依赖

javascript - 将退出键绑定(bind)到实例?

asp.net - 列出 Asp.Net 中 GridView 事件的顺序

c# - 移除 X509Certificate2 对象的智能卡时的事件

c# - 如何使用委托(delegate)和事件处理程序进行用户控制

c# - C#中判断类是否直接继承接口(interface)

c# - 如何在 WPF 中将自定义对象绑定(bind)到列表框

c# - 在设计时获取文件的相对路径

php - Magento - customer_save_after 总是解雇两次