Я делаю простое приложение для видеоплеера С# 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, если можно опубликовать пример кода.