7

ラップ パネルにいくつかのユーザー コントロールを作成しています。ユーザーコントロールにバインドされたビューモデルがあり、ビューモデルのプロパティにトリガーされるアニメーションがあります。点滅をシミュレートするために、非常に単純な色を赤から透明に切り替えます。

<Storyboard x:Key="alertAnimation" RepeatBehavior="Forever" AutoReverse="True" >
    <ColorAnimationUsingKeyFrames Storyboard.TargetProperty="(Border.BorderBrush).(SolidColorBrush.Color)"
                                  Storyboard.TargetName="TileBorder"
                                  BeginTime="00:00:00"
                                  RepeatBehavior="Forever"
                                  AutoReverse="True"
                                  >
        <DiscreteColorKeyFrame Value="Red"/>
        <DiscreteColorKeyFrame KeyTime="00:00:00.500" Value="Transparent" />
    </ColorAnimationUsingKeyFrames>

</Storyboard>

これはうまくいきます。ただし、複数のユーザーコントロールを非同期にロードするため、点滅アニメーションは同期されないため、すべて異なるタイミングで点滅します。画面上で点滅するものはすべて、同じ速度/時間で点滅する必要があるという要件があります。これらのアニメーションを同期する方法はありますか? 私が達成しようとしていることに適合する例はどこにも見つからないようです。ParallelTimeline を使用してすべてのアニメーションを追加し、単一のコントローラーから開始/停止する方法はありますか? これを達成する方法の例はありますか?

編集 4/20 style.xaml ファイルでアニメーションを定義し、各コントロールが「まばたき」アニメーションを追加する「グローバル」ストーリーボードを用意し、メイン UI でストーリーボードを開始する方がよいでしょうか?

4

2 に答える 2

3

複数のユーザーコントロールで複数のアニメーションを制御する良い方法が見つからなかったため、ユーザーコントロールでアニメーションを使用せず、代わりにアニメーションを使用して静的オブジェクトの依存関係プロパティを変更し、何らかの方法で点滅する必要があるすべてのユーザーコントロールをバインドしますその物件に。希望する結果を得るにはさまざまな方法がありますが、最終的には、すべてのコントロールがまばたきのオンとオフを認識して、すべてが同期されるようにする方法を手に入れました。

次のサイトからアイデアとサンプル コードを入手しました: How to synchronizes animations across usercontrols in wpf

私はそれにいくつかの変更を加えましたが、全体として、私が必要としていたことを正確に実行しました.

于 2012-04-20T18:25:34.823 に答える
0

明らかにこれを変更する必要がありますが、色の変化を0にすると、オーバーヘッドが少なくなり、瞬きが発生する可能性があります。そして、そうではないかもしれません。試してみてください。

    <Rectangle Name="MyRectangle" Width="100" Height="100">
        <Rectangle.Fill>
            <SolidColorBrush x:Name="MySolidColorBrush" Color="Blue" />
        </Rectangle.Fill>
        <Rectangle.Triggers>
            <EventTrigger RoutedEvent="Rectangle.MouseEnter">
                <BeginStoryboard>
                    <Storyboard>
                        <DoubleAnimation 
            Storyboard.TargetName="MyRectangle"
            Storyboard.TargetProperty="Width"
            From="100" To="200" Duration="0:0:1" />

                        <ColorAnimation 
            Storyboard.TargetName="MySolidColorBrush"
            Storyboard.TargetProperty="Color"
            From="Blue" To="Red" BeginTime="0:0:1"  Duration="0:0:0"  />
                    </Storyboard>
                </BeginStoryboard>
            </EventTrigger>
        </Rectangle.Triggers>
    </Rectangle>
于 2012-04-19T13:41:28.177 に答える