1

我在 MainWindow 中有一个带有 3 个不同 UserControls 的 WPF 应用程序,当时只有其中一个是可见的。这就像拥有 3 个不同的页面,您可以在喜欢时从一个页面切换到另一个页面。第一页就像一个开始屏幕。二是像“一般看法”。第三页显示详细信息。使用 Storyboard 在它们之间切换可以正常工作。我只是使可见页面不可见(不透明度为零)并将其移出可见窗口区域并将新页面移动到可见窗口区域并使其可见。到目前为止一切顺利......(希望你明白我想说的^^)

现在我想要在显示详细信息页面时播放背景音乐。只有这样。不是当用户查看开始屏幕和一般视图时。

我想我必须用媒体元素制作一些东西。并使用我的故事板启动或停止媒体元素。

但是如何处理我的故事板中的媒体元素?

4

1 回答 1

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 中无法执行的参数(据我所知)。您可能需要使用后面的代码来触发动画。

希望这可以帮助...

于 2010-06-30T19:59:13.070 回答