MediaElement.IsLoaded谎言

dan*_*hat 2 c# media wpf

所以我创建了一个幻灯片.幻灯片显示使用两个重叠的媒体元素来显示图片.转换只是意味着减少前景元素的不透明度并增加背景元素的不透明度.

问题是图片没有足够快地加载到媒体元素中.这导致口吃并且通常看起来很糟糕.我认为我可以创建一个紧密循环来查看MediaElement.IsLoaded属性,直到它变为true.事实证明isLoaded总是正确的,因为IsLoaded考虑了媒体元素,而不是源.

我也考虑过MediaElement.DownloadProgress,但它也存在.

思考?

Ric*_*key 7

Loaded事件和IsLoaded财产是来自所有的WPF控件的一般特征FrameworkElement.该IsLoaded属性变得trueLoaded当元素被添加到可视化树,而不是当已显示该元素的内容引发的事件.所以IsLoaded是你想检测一下错误的性质.

Loaded事件描述如下:

Loaded通常是元素初始化序列中引发的最后一个事件.

另一方面,MediaElement有一个可能满足您需求的活动:

这是这样描述的:

在验证并打开媒体流并且已读取文件头时发生.

这听起来像是您的应用程序的正确事件.