1

UserControl の変更C#時にトリガーされるスライド アニメーションを作成しました。現在のプロパティをこのような新しいプロパティにVisibility置き換えることでこれを行いました。Visibility

public new Visibility Visibility 

そして、基本クラスの Visibility を更新するには、このようにプロパティbase.Visibilityvalueフィールドを使用して入力します。set

base.Visibility = value;

また、値が Visible または Hidden であるかどうかを確認するためのStoryboardinsetを追加しました。if

UserControl を開くと、アニメーションが再生される前に可視性が更新されますが、これは問題なく実行されます。

UserControl を閉じると、アニメーションの完了後に Visiblity が更新されると想定されますが、新しいVisibility値が に設定されていませんbase.Visibility

このObjectAnimationUsingKeyFrames投稿に示されているように、表示を設定するために Xaml でこれを実行しようとしましたが、これは UserControl を開くために使用するボタン イメージの更新に時間がかかりました。

これは私が今持っているコードです。

public new Visibility Visibility
{
    get { return base.Visibility; }
    set
    {
        double marginNumber = Width * -1;
        Storyboard board = null;

        try
        {
            board = (Storyboard)FindResource("Slide");
            Storyboard.SetTarget(board, this);
        }
        catch (Exception) { }

        if (value == System.Windows.Visibility.Visible)
        {    
            Margin = new Thickness(Margin.Left, Margin.Top, marginNumber, Margin.Bottom);
            base.Visibility = value;
            if (board != null)
            {
                ((ThicknessAnimation)board.Children[0]).To = new Thickness(Margin.Left, Margin.Top, 0, Margin.Bottom);
                ((ThicknessAnimation)board.Children[0]).From = Margin;
                board.Begin();
            }
        }
        else
        {
            if (board != null)
            {
                ((ThicknessAnimation)board.Children[0]).To = new Thickness(Margin.Left, Margin.Top, marginNumber, Margin.Bottom);
                ((ThicknessAnimation)board.Children[0]).From = Margin;
                EventHandler handle = null;
                handle += (s, e) =>
                {
                    board.Stop();
                    board.Completed -= handle;

                    base.Visibility = value; <<-- This one does not update.
                };
                board.Completed += handle;
                board.Begin();
            }
        }
    }
}

アニメーション イベントが完了したときに可視性が設定されないのはなぜですか? または、リンクした投稿の方法を使用する必要がありますか?

ありがとう。

4

0 に答える 0