Wpf 无法在由时钟驱动的MediaElement上设置源
我已经创建了一个简单的WPF应用程序。 在我的XAML中,我有:Wpf 无法在由时钟驱动的MediaElement上设置源,wpf,mediaelement,Wpf,Mediaelement,我已经创建了一个简单的WPF应用程序。 在我的XAML中,我有: <StackPanel Orientation="Horizontal"> <MediaElement x:Name="media" Width="200" Height="200" Source="D:\Wpf project\wpfSampleApp\wpfSampleApp\Wildlife.wmv"> <MediaElement.Triggers>
<StackPanel Orientation="Horizontal">
<MediaElement x:Name="media" Width="200" Height="200" Source="D:\Wpf project\wpfSampleApp\wpfSampleApp\Wildlife.wmv">
<MediaElement.Triggers>
<EventTrigger RoutedEvent="MediaElement.Loaded" SourceName="media">
<EventTrigger.Actions>
<BeginStoryboard Name= "myBegin">
<Storyboard SlipBehavior="Slip">
<MediaTimeline Source="{Binding Source,ElementName=media,Mode=OneWay}" Storyboard.TargetName="media"
BeginTime="0:0:0" Duration="0:10:59" RepeatBehavior="Forever" />
</Storyboard>
</BeginStoryboard>
</EventTrigger.Actions>
</EventTrigger>
</MediaElement.Triggers>
</MediaElement>
<Button x:Name="btnnext" Content="Next" Width="100" Height="30" Click="btnnext_Click"/>
</StackPanel>
相反,我面临的错误是“无法在时钟驱动的MediaElement上设置源”
请帮助我克服这个异常,我更喜欢修改XAML,而不是在XAML.cs文件中编写代码
任何帮助都将不胜感激,谢谢我遇到了同样的问题。终于找到了解决办法。这是我实现的解决方案
要在时钟分配给MediaElement时设置MediaElement的源[使用MediaTimeLine],我们应该首先检查当前线程是否有权访问MediaElement。这可以通过布尔值-MediaElement.CheckAccess或MediaElement.Clock.CheckAccess来实现。我遇到了同样的问题。终于找到了解决办法。这是我实现的解决方案
要在时钟分配给MediaElement时设置MediaElement的源[使用MediaTimeLine],我们应该首先检查当前线程是否有权访问MediaElement。这可以通过布尔值-MediaElement.CheckAccess或MediaElement.Clock.CheckAccess来完成。正如错误消息所说:如果MediaElement由时钟控制(即,
MediaTimeline
),则无法设置其源。您应该将MediaTimeline
(仅)的源绑定到DataContext
中的URI
,如错误消息所示:如果MediaElement
由时钟控制(即MediaTimeline
),则无法设置其源。您应该将MediaTimeline
(仅)的源绑定到DataContext
中的URI
,派对已经很晚了,但是如果有人需要类似的东西,我发现一个解决方案不是MVVM模式,但对于这种情况,应该可以原谅
Xaml部件
<MediaElement Name="Player">
<MediaElement.Triggers>
<EventTrigger RoutedEvent="MediaElement.Loaded">
<EventTrigger.Actions>
<Storyboard Name="MediaBoard">
<MediaTimeline Source="path" Storyboard.TargetName="Player" RepeatBehavior="Forever"/>
</Storyboard>
</EventTrigger.Actions>
</EventTrigger>
</MediaElement.Triggers>
</MediaElement>
派对已经很晚了,但是如果有人需要类似的东西,我发现一个解决方案不是MVVM模式,但是对于这种情况,应该可以原谅 Xaml部件
<MediaElement Name="Player">
<MediaElement.Triggers>
<EventTrigger RoutedEvent="MediaElement.Loaded">
<EventTrigger.Actions>
<Storyboard Name="MediaBoard">
<MediaTimeline Source="path" Storyboard.TargetName="Player" RepeatBehavior="Forever"/>
</Storyboard>
</EventTrigger.Actions>
</EventTrigger>
</MediaElement.Triggers>
</MediaElement>
private void ChangeLoopedVideo(Uri url)
{
MediaTimeline timeline = new MediaTimeline(url);
timeline.RepeatBehavior = RepeatBehavior.Forever;
Storyboard.SetTarget(timeline, Player);
MediaBoard.Children.Clear();
MediaBoard.Children.Add(timeline);
MediaBoard.Begin();
}