我有一个MediaElement,其中源绑定到某些数据
<MediaElement Source='{Binding Something}' />
让视频重复的最简单方法是什么?理想情况下,MediaElement将具有重复行为属性。
<MediaElement RepeatBehavior='Forever' ... />
但我找不到这样的财产。
答案 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
设置为MediaState
。Manual
以及以下代码使其成功:
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事件并且它有效。