在另一个窗口中侦听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事件。
从主窗口引发自定义.net事件(该自定义事件将由媒体结束事件引发)并在播放列表窗口中订阅,在该事件的事件处理程序中返回下一个.avi文件的文件名