2012-03-07 1 views
3

저는 간단한 C# WPF 비디오 플레이어 앱을 만들고 있습니다.다른 창에서 MediaEnded 이벤트 수신

2 개의 Windows가 있습니다. MainWindow (부모 창)에는 비디오를 표시 할 MediaElement가 있습니다. PlaylistWindow (하위 창)는 appRoot 경로에있는 모든 .avi 파일을 표시하는 ListBox가 포함 된 창입니다.

현재 ListBox 항목을 두 번 클릭하면 MainWindow에서 해당 비디오가 재생됩니다. 자동 재생 기능을 사용하여 현재 비디오가 끝날 때 목록의 다음 항목이 자동으로 재생되도록하고 싶습니다.

PlaylistWindow에서 ListBox에 대해 몇 가지 작업을 수행 할 수 있도록 PlaylistWindow가 MainWindow의 MediaElement에 의해 트리거 된 MediaEnded 이벤트를 수신 대기하고 싶습니다.

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 파일의 파일 이름을 반환