我有一个WPF应用程序可以动态地将视频或图像文件(取决于用户的选择)加载到MediaElement
控件。
它是视频时工作正常,并在结束视频时触发MediaEnded
事件。
但是当我加载图像时,MediaEnded
事件会在5秒内触发。
它是默认值吗?或者我可以通过编程方式更改它吗?
是否有任何属性可以更改此间隔或禁用此选项?
在特定行动之前是否可以暂停?
我已设置以下属性如下
MediaControl1.LoadedBehavior = MediaState.Manual;
MediaControl1.UnloadedBehavior = MediaState.Manual;
答案 0 :(得分:2)
MediaElement
是Windows Media Player的一个(非常薄的)包装器(或者更确切地说 - 使用Windows Media Player使用的相同框架)。如果您在Windows Media Player中打开图像 - 您将看到它将像播放幻灯片(即使是1张图像)一样“播放”大约5秒钟。这就是您在5秒内获得MediaEnded
事件的原因 - Windows Media Player会在此期间播放带有您图像的幻灯片。我怀疑是否有办法从WPF改变这一点(因为它是外部程序\框架的行为,与MediaElement
本身无关)而且我不知道如何为Windows Media Player更改此功能(甚至如果有这样的方式 - 它将具有全局效果,您可能不希望以这种方式修改您的客户端计算机。)
要解决您的问题 - 只是不要使用MediaElement
来显示图片 - 请使用Image
控制之类的内容。如果您有充分的理由这样做 - 您可以在加载“幻灯片”后使用MediaElement
方法暂停Pause
,然后它就不会触发MediaEnded
事件。总而言之 - 我无法想象你真的必须使用MediaElement
作为图像的任何用例。
答案 1 :(得分:0)
您可以在加载图像时重复播放媒体。像这样处理MediaEnded
事件:
void me_MediaEnded(object sender, EventArgs e)
{
//play video again
mediaElement.Position = new TimeSpan(0, 0, 1);
mediaElement.Play();
}
另外看到这个。它可能有所帮助: https://stackoverflow.com/a/3406857/5675763