2017-10-04 107 views
1

我有一个动态加载视频或图像文件(取决于用户的选择,到一个MediaElement控制的WPF应用程序 它是工作正常,当它是一个视频,并得到MediaEnded事件发射结束视频 但是当我加载图像时,MediaEnded事件在5秒内被触发 是默认值吗?还是我可以通过编程方式更改它? 是否有任何属性可以更改此间隔或禁用此选项? 是否可以使其暂停直到具体操作?mediaended事件是否有任何默认的时间间隔被触发?

我已经设置了以下属性如下​​

MediaControl1.LoadedBehavior = MediaState.Manual; 
MediaControl1.UnloadedBehavior = MediaState.Manual; 

回答

1

MediaElement是一个围绕Windows Media Player(或更确切地说 - 使用与Windows Media Player使用相同的框架)的(非常薄)包装。如果您在Windows Media Player中打开图像 - 您将看到它会像播放幻灯片一样(即使是1张图像)“播放”它约5秒钟。这就是为什么你在5秒内得到MediaEnded事件 - Windows Media Player在那段时间内与你的图像一起播放幻灯片。我怀疑有一种方法可以从WPF中改变它(因为它是外部程序\框架的行为,与MediaElement本身无关),我不知道如何改变Windows Media Player的这种方式(即使有这样的一种方式 - 它会产生全局效应,你可能不想以这种方式修改你的客户端计算机)。

要解决您的问题 - 只是不要使用MediaElement来显示图像 - 使用类似Image控件。如果你真的有很强的理由这么做 - 你可以在加载“幻灯片”之后用Pause方法暂停MediaElement,然后它不会触发MediaEnded事件。总而言之 - 我无法想象任何使用情况下,你真的必须使用MediaElement的图像。

+0

绝对不是WMP。这一切都是由MilCore完成的,当然它正在包装媒体基金会。我怀疑它来自[此](https://msdn.microsoft.com/en-us/library/windows/desktop/bb787399(v = vs.85).aspx)与UseValueForDefault = True和Medium。但是很难进行反向工程。 –

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

相关问题