我在MainWindow中有一个带有3个不同UserControl的WPF应用程序,当时只能看到其中一个。这就像拥有3个不同的页面,您可以在喜欢的时候从一个页面切换到另一个页面。第一页就像一个开始画面。第二个是“一般观点”。第三页显示详细信息。在Storyboard之间切换可以正常工作。我只是让可见页面不可见(不透明度为零)并将其移出可见窗口区域并将新页面移动到可见窗口区域并使其可见。到目前为止一切都那么好......(希望你能理解我想要讲的内容^^)
现在我希望播放背景音乐,就像显示详细页面一样。只有这样。不是当用户在普通视图中查看启动屏幕时。
我想我必须用媒体元素做点什么。用我的故事板开始或停止媒体元素。
但我如何处理故事板中的媒体元素?
答案 0 :(得分:1)
你有正确的想法:
在您的详细信息页面放入的任何布局容器(网格,边框等)中使用MediaElement
<MediaElement x:Name="myMediaElement" />
制作包含MediaTimeline的故事板资源
<Window.Resources>
<Storyboard x:Key="PlaySoundStoryboard">
<MediaTimeline Storyboard.TargetName="myMediaElement" Source="whatever.mp3" />
</Storyboard>
我知道按钮和事物你可以使用事件触发器来启动和停止故事板:
<Grid x:Name="LayoutRoot">
<Grid.Triggers>
<EventTrigger RoutedEvent="ButtonBase.Click" SourceName="playbutton">
<BeginStoryboard Storyboard="{StaticResource PlaySoundStoryboard}" Name="theStoryboard" />
</EventTrigger>
<EventTrigger RoutedEvent="ButtonBase.Click" SourceName="stopbutton">
<StopStoryboard BeginStoryboardName="theStoryboard" />
</EventTrigger>
</Grid.Triggers>
<MediaElement x:Name="myMediaElement" />
<Button Name="playbutton">play</Button>
<Button Name="stopbutton">stop</Button>
</Grid>
但我不知道你如何为容器的可见性做这件事。 IsVisibleChanged会要求你查看在XAML中你不能做的参数(据我所知)。您可能需要使用后面的代码触发动画。
希望这会有所帮助......