Когда MediaElement начинает воспроизводить видео, оно на мгновение показывается черной рамкой. Вот код:
<Window x:Class="MediaElementTest.MainWindow" /* */
Title="MainWindow" Height="350" Width="525" Background="Red">
<Grid>
<ContentControl x:Name="contentControl"/>
</Grid>
</Window>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
NextState();
}
public void NextState()
{
var content = new VideoState();
contentControl.Content = content;
}
}
И
<UserControl x:Class="MediaElementTest.VideoState" /* */
d:DesignHeight="300" d:DesignWidth="300">
<Grid>
<MediaElement x:Name="videoPlayer" MediaEnded="videoPlayer_MediaEnded" LoadedBehavior="Manual" />
</Grid>
</UserControl>
public partial class VideoState : UserControl
{
public VideoState()
{
InitializeComponent();
videoPlayer.Source = new Uri("C:\\wpf\\bin\\Debug\\data\\start.mp4");
//videoPlayer.Position = TimeSpan.FromMilliseconds(100); //!!! WORKS FINE WITH IT
videoPlayer.Play();
}
private void videoPlayer_MediaEnded(object sender, RoutedEventArgs e)
{
videoPlayer.Source = null;
videoPlayer = null;
GC.Collect();
MainWindow wnd = (MainWindow)Application.Current.MainWindow;
wnd.NextState();
}
}
Если я установлю videoPlayer.Position как 100 миллисекунд, он будет работать нормально. Как я могу избавиться от этой черной рамки. Я попытался установить ScrubbingEnabled="true"
и сделать что-то вроде:
videoPlayer.Play();
videoPlayer.Pause();
videoPlayer.Play();
Но разницы нет, и всплывающее окно все еще появляется. Если я установлю videoPlayer.Position в 0ms для события mediaEnded и воспроизведу, то он также будет работать нормально. Буду признателен за любую помощь.