0

WPF アプリでは、TextBox の MouseEnter イベントで境界線の色の変化をアニメーション化しようとしています。
しばらく検索して、さまざまなチュートリアルに従いましたが、すべて同じように終わるようです。

  • マウスが入ると境界線の色がアニメーション「From」で設定した色に変わります
  • その後、何も起こらず、アニメーションはまったくありません
  • マウスがアニメーションの長さよりも長い時間後に離れると、アニメーションの「To」で設定した色に色が変わります
  • マウスがアニメーション期間の前に離れると、境界線の色が「中間」の色に変わります

このことから、アニメーションが発生していることがわかりましたが、アニメーションとして表示されていません...
コードは次のとおりです。

private void txtSpeakMe_MouseEnter(object sender, MouseEventArgs e)
{
    ColorAnimation ca = new ColorAnimation();
    ca.From = (Color)ColorConverter.ConvertFromString("#0066FF");
    ca.To = (Color)ColorConverter.ConvertFromString("#FF0000");
    ca.Duration = TimeSpan.FromSeconds(3);
    txtSpeakMe.BorderBrush.BeginAnimation(SolidColorBrush.ColorProperty, ca);
}

アニメーションが起こっているときにアニメーションが表示されない理由について何か考えはありますか? MSチュートリアルを使用してXAMLでアニメーションを試しましたが、同じ効果がありました-アニメーションはしますが、マウスが離れるまでアニメーションのプロセスが表示されません...

4

2 に答える 2

0

TextBox の境界線の色が変わらない理由はわかりませんが、これを試すことができます:

<Border Name = "border" BorderThickness="5">
<TextBox MouseEnter="TextBox_MouseEnter" MouseLeave="TextBox_MouseLeave"/>
</Border>

次に、MouseEnter と MaouseLeave で次のコードを試してください。

        ColorAnimation ca = new ColorAnimation();
        ca.From = (Color)ColorConverter.ConvertFromString("#0066FF");
        ca.To = (Color)ColorConverter.ConvertFromString("#FF0000");
        ca.Duration = TimeSpan.FromSeconds(3);
        Storyboard sb = new Storyboard();
        sb.Children.Add(ca);
        Storyboard.SetTarget(ca, border);
        Storyboard.SetTargetProperty(ca, new PropertyPath("(Border.BorderBrush).(SolidColorBrush.Color)"));
        sb.Begin();
于 2013-04-17T01:12:02.297 に答える