Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何为我的WPF应用程序制作背景音乐?_Wpf_Playback - Fatal编程技术网

如何为我的WPF应用程序制作背景音乐?

如何为我的WPF应用程序制作背景音乐?,wpf,playback,Wpf,Playback,我有一个WPF应用程序,在主窗口中有3个不同的UserControls,当时只有一个是可见的。这就像有3个不同的页面,你可以在喜欢的时候从一个页面切换到另一个页面。第一页就像一个开始屏幕。二是像“总论”。第三页显示了详细信息。在它们之间切换可以很好地使用故事板。我只是使可见页面不可见(不透明度为零)并将其移出可见窗口区域,然后将新页面移至可见窗口区域并使其可见。到现在为止,一直都还不错。。。(希望你明白我想说的话^^) 现在我想让背景音乐在显示详细信息页面时播放。只有到那时。当用户在常规视图中查

我有一个WPF应用程序,在主窗口中有3个不同的UserControls,当时只有一个是可见的。这就像有3个不同的页面,你可以在喜欢的时候从一个页面切换到另一个页面。第一页就像一个开始屏幕。二是像“总论”。第三页显示了详细信息。在它们之间切换可以很好地使用故事板。我只是使可见页面不可见(不透明度为零)并将其移出可见窗口区域,然后将新页面移至可见窗口区域并使其可见。到现在为止,一直都还不错。。。(希望你明白我想说的话^^)

现在我想让背景音乐在显示详细信息页面时播放。只有到那时。当用户在常规视图中查看startscreen ir时,情况并非如此

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


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

您的想法是正确的:

  • 在详细信息页面放入的任何布局容器(网格、边框等)中使用MediaElement

  • 使您的故事板资源具有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中无法执行的参数(据我所知)。您可能需要使用代码隐藏触发动画


希望这有助于……

您的想法是正确的:

  • 在详细信息页面放入的任何布局容器(网格、边框等)中使用MediaElement

  • 使您的故事板资源具有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中无法执行的参数(据我所知)。您可能需要使用代码隐藏触发动画

希望这有助于