1

MainWindow に 3 つの異なる UserControls を持つ WPF アプリケーションがあり、これらのうちの 1 つだけが一度に表示されます。3 つのページがあり、好きなときにページを切り替えることができます。最初のページはスタート画面のようなものです。2つ目は「全体像」のようなものです。3 ページ目には詳細が表示されます。それらの切り替えは、ストーリーボードでうまく機能します。表示されているページを非表示 (不透明度をゼロ) にして、表示されているウィンドウ領域の外に移動し、新しいページを表示されているウィンドウ領域に移動して表示します。ここまでは良かった... (私の言いたいことがわかっていただけたでしょうか^^)

ここで、詳細ページが表示されたときにバックグラウンド ミュージックを再生したいと考えています。そしてその時だけ。ユーザーが一般的なビューでスタート画面を見ているときではありません。

メディア要素で何かを作らないといけないと思います。そして、ストーリーボードでメディア要素を開始または停止します。

しかし、ストーリーボードでメディア要素を処理するにはどうすればよいでしょうか?

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 に答える