更改mediaelement源基于操作

时间:2011-04-15 17:32:46

标签: wpf vb.net video mediaelement

我有一个WPF 4和VB.net 2010项目。我正在一个媒体元素中播放视频。这就是我需要做的事情:

当窗口首次打开时,我第一次播放视频就好了。然而,正是在这段视频播放之后,我遇到了如何做以下事情的麻烦。

  1. 我需要在一次播放任何视频后立即更改视频源,我需要将此视频(以下简称“环境”视频)永久循环播放。

  2. 当某个事件发生时,我需要再次更改视频源,让它播放一次,然后在步骤1中返回循环环境视频。

  3. 然而,这是一个问题。许多视频触发器都在代码后面的If-Then或Select Case语句中,所以我不是专门使用简单的WPF事件,如“MouseUp”或“MouseEnter”。

    此外,出于性能原因,所有视频必须在同一媒体元素中播放。

    提前谢谢!

    我该怎么做?

2 个答案:

答案 0 :(得分:2)

媒体元素的Source是DependencyProperty,因此对它的任何更改都会立即反映在UI中。

如果将其与触发的MediaEnded事件结合使用,则可以设置源并解决您的问题。

当您在代码中点击触发器时,您可以调用方法或触发事件。您将不得不使用State Pattern的某些外观来处理其他逻辑。顺便一提,请查看Programming Without Ifs,这是一个关于如何避免疯狂条件逻辑的精彩介绍。

答案 1 :(得分:0)

我将mediaelement的LoadedBehavior设置为“Play”并将Unloadedbehavior设置为“Stop”,然后我就可以在代码中更改mediaelement本身的来源,并将每个视频后播放的视频放入MediaEnded事件中。

事实证明,当LoadedBehavior设置为“Manual”时,MediaEnded不会自动触发,除非在代码中显式调用“Stop”。

我讨厌接受我自己的答案,所以Nate Noonen得到了赏金(他原来是在正确的小巷里)! TY!