在MediaElement中重复视频的最简单方法是什么

时间:2010-08-04 14:51:02

标签: wpf video

我有一个MediaElement,其中源绑定到某些数据

<MediaElement Source='{Binding Something}' />

让视频重复的最简单方法是什么?理想情况下,MediaElement将具有重复行为属性。

<MediaElement RepeatBehavior='Forever' ... />

但我找不到这样的财产。

4 个答案:

答案 0 :(得分:14)

您需要将一个Storyboard添加到MediaElement。请参阅以下示例:

<MediaElement Name="myMediaElement" >
      <MediaElement.Triggers>
        <EventTrigger RoutedEvent="MediaElement.Loaded">
          <EventTrigger.Actions>
            <BeginStoryboard>
              <Storyboard>

                <!-- The MediaTimeline has a RepeatBehavior="Forever" which makes the media play
                     over and over indefinitely.-->
                <MediaTimeline Source="media\tada.wav" Storyboard.TargetName="myMediaElement"  
                 RepeatBehavior="Forever" />

              </Storyboard>
            </BeginStoryboard>
          </EventTrigger.Actions>
        </EventTrigger>
      </MediaElement.Triggers>
    </MediaElement>

答案 1 :(得分:9)

我通过将UnloadedBehavior设置为MediaStateManual以及以下代码使其成功:

private void mediaElement_OnMediaEnded(object sender, RoutedEventArgs e)
{
    mediaElement.Position = new TimeSpan(0,0,1);
    mediaElement.Play();
}

将位置设置为零无效...

答案 2 :(得分:3)

我知道这有点晚了,但是我无法从MSDN开始工作。所以经过研究我找到了这个项目:WPF Media Kit,只需点击屏幕右侧最新版本的浏览链接即可。您将输入示例应用程序的代码。我喜欢这个库,因为循环很简单:

MediaUriElement MyPlayer.Loop = True;

或     <DirectShowControls:MediaUriElement x:Name="MyPlayer" Loop="True" />

希望这有助于其他人。

问候!

答案 3 :(得分:0)

mediaElement.Position = new TimeSpan(0,0,1)添加到媒体播放器方法中(在播放媒体之前)没有任何效果,而是由MasterMastic和Guido Zanon建议的。我使用给定的内容为MediaEnded创建了MediaElement事件并且它有效。