我正在制作一个简单的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事件。
答案 0 :(得分:1)
从主窗口提升自定义.net事件(此自定义事件将由Media结束事件引发)并在播放列表窗口中订阅它,在此事件的事件处理程序中返回下一个.avi文件的文件名