【发布时间】:2018-01-24 23:47:31
【问题描述】:
我有一个 MediaElement,其中源绑定到一些数据
<MediaElement Source='{Binding Something}' />
让视频重复播放的最简单方法是什么?理想情况下,MediaElement 将具有重复行为属性。
<MediaElement RepeatBehavior='Forever' ... />
但是我找不到这样的属性。
【问题讨论】:
我有一个 MediaElement,其中源绑定到一些数据
<MediaElement Source='{Binding Something}' />
让视频重复播放的最简单方法是什么?理想情况下,MediaElement 将具有重复行为属性。
<MediaElement RepeatBehavior='Forever' ... />
但是我找不到这样的属性。
【问题讨论】:
您需要将情节提要添加到 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>
【讨论】:
我通过将UnloadedBehavior 设置为MediaState.Manual 和以下代码使其工作:
private void mediaElement_OnMediaEnded(object sender, RoutedEventArgs e)
{
mediaElement.Position = new TimeSpan(0,0,1);
mediaElement.Play();
}
将位置设置为零不起作用...
【讨论】:
TimeSpan.Zero 效果很好。
LoadedBehaviour 设置为Play,请删除mediaElement.Play();。
我知道这有点晚了,但我无法使用 MSDN 中的示例。所以经过研究我发现了这个项目:WPF Media Kit,只需点击屏幕右侧最新版本中的浏览链接。您将输入示例应用程序的代码。我喜欢这个库,因为循环很简单:
MediaUriElement MyPlayer.Loop = True;
或
<DirectShowControls:MediaUriElement x:Name="MyPlayer" Loop="True" />
希望这对其他人有所帮助。
问候!
【讨论】:
将mediaElement.Position = new TimeSpan(0,0,1) 添加到媒体播放器方法(在播放媒体之前)没有任何效果,正如 MasterMastic 和 Guido Zanon 所建议的那样。我使用给定的内容为 MediaEnded 创建了 MediaElement 事件并且它有效。
【讨论】: