キュー (スペースを押す) に基づいて不透明度を変更するアニメーション コントロールを作成しようとしています。
アニメーション自体は正常に動作します。キープレスに基づいて、不透明度がアニメーション化し、コントロールが表示されます。残りのコンテンツを含むグリッド コントロールにアニメーションを配置しました。
問題は次のとおりです。アニメーションが終了した後、手動で (コード ビハインドから) true に設定した後でも、グリッドの IsEnabled プロパティは「false」のままです。このコマンドは例外を発生させませんが、実際にはプロパティも変更しません。
その後、同じアニメーションをもう一度実行しますが、逆にすると、値は実際には「true」になります。しかしもちろん、その瞬間にはすでにフェードアウトしています。
void Initialize()
{
// fade animation storyboard
FadeAnimation = new DoubleAnimation(0.0, 1.0,
new Duration(TimeSpan.FromSeconds(0.7)))
{ FillBehavior = FillBehavior.HoldEnd };
FadeStoryboard.Children.Add(FadeAnimation);
Storyboard.SetTargetName(FadeAnimation, grid.Name);
Storyboard.SetTargetProperty(FadeAnimation,
new PropertyPath(Grid.OpacityProperty));
}
// flipping the animation around
void InputManager_KeyDown(object sender, KeyEventArgs e)
{
if (e.Key == Key.Space)
{
if (!ViewModel.IsActive)
{
FadeAnimation.From = grid.Opacity;
FadeAnimation.To = 1.0;
FadeStoryboard.Begin(this);
ViewModel.IsActive = true;
}
else if (ViewModel.IsActive)
{
FadeAnimation.From = grid.Opacity;
FadeAnimation.To = 0.0;
FadeStoryboard.Begin(this);
ViewModel.IsActive = false;
}
}
}
[編集] いくつかの追加のデバッグを通じて、フェードイン時に有効に false にアクティブに設定し、フェードアウト時に true に設定するのはアニメーションであることがわかりました。これは、私がやりたいこととは正反対です。
[編集 2] アニメーションを完全に捨てて、可視性を Hidden との間で変更すると、まったく同じ問題が発生します。非表示にすると有効になり、可視にすると無効になります。