UserControl の変更C#
時にトリガーされるスライド アニメーションを作成しました。現在のプロパティをこのような新しいプロパティにVisibility
置き換えることでこれを行いました。Visibility
public new Visibility Visibility
そして、基本クラスの Visibility を更新するには、このようにプロパティbase.Visibility
のvalue
フィールドを使用して入力します。set
base.Visibility = value;
また、値が Visible または Hidden であるかどうかを確認するためのStoryboard
inset
を追加しました。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();
}
}
}
}
アニメーション イベントが完了したときに可視性が設定されないのはなぜですか? または、リンクした投稿の方法を使用する必要がありますか?
ありがとう。