2012-03-07 58 views
3

我正在制作一个简单的C#WPF视频播放器应用程序。在另一个窗口中监听MediaEnded事件

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

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

我想PlaylistWindow监听MediaElement在MainWindow中触发的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事件监听,如果一个代码示例,可以发布。

回答

1

提高从主窗口自定义.NET事件(这个自定义事件将媒体结束事件得到提升),并认购其在播放列表窗口,在此事件的事件处理程序返回下一个.avi文件的文件名