在加载的窗口上播放mediaelement
本文关键字:播放 mediaelement 窗口 加载 | 更新日期: 2023-09-27 18:05:42
我有一个有线问题,或者至少我没有找到任何解决方案:)在wpf应用程序中,加载窗口时发生了一个耗时的过程。在此期间,我用包含MediaElement
的边界覆盖我的窗口,其中LoadedBehavior设置为Play
。耗时的过程在BackgroundWorker
中运行,一旦完成,我将覆盖的Visible
属性设置为Hidden
。
当我的应用程序启动时,覆盖显示得很好,但MediaElement
(这是一个动画gif)不显示。然而,当我将叠加可见属性设置为可见之后,gif渲染得很好。
我的问题是,为什么gif没有第一次显示?此外,MediaOpened事件仅在BackgroundWorker结束后触发....
代码:
public MainWindow()
{
InitializeComponent();
//BackgroundWorker
bckgndWorker = new BackgroundWorker();
bckgndWorker.DoWork += new DoWorkEventHandler(bg_DoWork);
bckgndWorker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(bg_RunWorkerCompleted);
}
void bckgndWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
this.ModalDialog.Visibility = System.Windows.Visibility.Hidden;
}
void bckgndWorker_DoWork(object sender, DoWorkEventArgs e)
{
//Do time consuming work
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
this.ModalDialog.Visibility = System.Windows.Visibility.Visible;
this.bckgndWorke.RunWorkerAsync();
}
private void myGif_MediaEnded(object sender, RoutedEventArgs e)
{
this.myGif.Position = new TimeSpan(0, 0, 1);
this.myGif.Play();
}
private void myGif_MediaOpened(object sender, RoutedEventArgs e)
{
MessageBox.Show("test");
}
private void button1_Click(object sender, RoutedEventArgs e)
{
this.ModalDialog.Visibility = System.Windows.Visibility.Visible;
}
XAML:
<Grid>
<Button Content="Button" Name="button1" Click="button1_Click" />
<Border Background="#90000000" Name="ModalDialog">
<MediaElement Name="myGif" UnloadedBehavior="Manual" LoadedBehavior="Play"
Stretch="Fill" Source="ajax-loader.gif" MediaEnded="myGif_MediaEnded" Width="200" Height="130" MediaOpened="myGif_MediaOpened" />
</Border>
</Grid>
我正在使用这个库成功地在WPF上播放gif文件:
http://wpfanimatedgif.codeplex.com/我希望它也能帮助你。