0

ユーザーコントロールの可視性が非表示に変わるたびに発生する非常に単純なフェードアウト効果を作成しようとしています。

これを行うために、ユーザー コントロールの可視性が非表示に変わるたびにトリガーされるストーリーボードを作成しました。次に、最初に可視性を再び可視に変更して、アニメーション化できるようにします。次に、時間の経過とともに不透明度を変更し、最後に可視性を非表示に変更します。ただし、これにより、アニメーションが永遠に繰り返されます。

最終フレームでコントロールを表示から折りたたみに変更すると、一度は機能しますが、ユーザー コントロールは再び表示されることはありません (私はIsVisibleChangedイベントをリッスンし、一度折りたたまれた後にトリガーされることはありません。control.Visibility = Visibility.Visible;そのイベント ハンドラーの最後にあるコード。

では、アニメーションが 1 回だけトリガーされるようにするにはどうすればよいでしょうか。できればコード ビハインドを使用せずに、このフェードアウト コントロールを素敵なリソース ディクショナリに追加するだけで、常に機能します。SO でこれに関連するいくつかの質問を見てきましたが、特にこれは機能しません。

私がこれまでに持っているコード:

<UserControl.Style>
        <Style TargetType="{x:Type UserControl}">
            <Style.Triggers>
                <Trigger Property="Visibility" Value="Hidden">
                    <Trigger.EnterActions>
                        <BeginStoryboard>
                            <Storyboard>
                                <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Visibility">
                                    <DiscreteObjectKeyFrame KeyTime="0">
                                        <DiscreteObjectKeyFrame.Value>
                                            <Visibility>Visible</Visibility>
                                        </DiscreteObjectKeyFrame.Value>
                                    </DiscreteObjectKeyFrame>
                                </ObjectAnimationUsingKeyFrames>
                                <DoubleAnimation Storyboard.TargetProperty="Opacity" From="1.0" To="0.0" Duration="0:0:3" FillBehavior="Stop"/>
                                <ObjectAnimationUsingKeyFrames BeginTime="0:0:3.5" Storyboard.TargetProperty="Visibility">
                                    <DiscreteObjectKeyFrame KeyTime="0">
                                        <DiscreteObjectKeyFrame.Value>
                                            <Visibility>Hidden</Visibility>
                                        </DiscreteObjectKeyFrame.Value>
                                    </DiscreteObjectKeyFrame>
                                </ObjectAnimationUsingKeyFrames>                                
                            </Storyboard>
                        </BeginStoryboard>
                    </Trigger.EnterActions>
                </Trigger>
            </Style.Triggers>
        </Style>
    </UserControl.Style>
4

1 に答える 1

0

ObjectAnimationVisibility を Hidden に設定する を削除しただけでうまくいきますか? コントロールは技術的には見えますが、不透明度は 0 ですか?

于 2013-03-13T17:17:34.827 に答える