Прослушивание события MediaEnded в другом окне

Я делаю простое приложение для видеоплеера С# WPF.

У меня 2 окна: MainWindow (родительское окно) содержит MediaElement для отображения видео. PlaylistWindow (дочернее окно) — это окно, содержащее ListBox, в котором отображаются все файлы .avi в пути appRoot.

В настоящее время, когда я дважды щелкаю элемент ListBox, он воспроизводит это видео в MainWindow. Я хотел бы иметь функцию автоматического воспроизведения, чтобы следующий элемент в списке автоматически воспроизводился, когда текущее видео заканчивается.

Я хотел бы, чтобы PlaylistWindow прослушивал событие MediaEnded, инициированное MediaElement в MainWindow, чтобы я мог выполнить какое-либо действие над ListBox в PlaylistWindow.

Как я могу подписаться на событие MediaEnded из PlaylistWindow?

Изменить для добавления: в итоге я использовал другой подход, как показано ниже. Я не думаю, что это лучший способ сделать это, но он работает для меня.

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());
    }
}

Я все еще открыт для изучения того, как прослушивать событие MediaEnded в PlaylistWindow, если можно опубликовать пример кода.


person sogosu    schedule 07.03.2012    source источник


Ответы (1)


Поднимите пользовательское событие .net из главного окна (это пользовательское событие будет вызвано событием завершения мультимедиа) и подпишитесь на него в окне списка воспроизведения, в обработчике события этого события верните имя файла следующего файла .avi.

person sanguine    schedule 07.03.2012