2

GroupBox コントロールの背景の不透明度をアニメーション化できる効果が必要です。
これにより、何かが変化した場合に視覚的な通知が追加されます。コントロールを点滅させて、新しいステータスを示すことができます。

私は持っている

private void ToggleBackgroundFade(Control control)
{
    var duration = new TimeSpan(0, 0, 0, 0, 200);

    var animation = new DoubleAnimation { From = 1.0, To = 0.0, Duration = new Duration(duration) };
    // new brush because old one is frozen
    control.Background = new SolidColorBrush(Color.FromArgb(0xFF, 0xD6, 0xEF, 0xD1));
    control.Background.BeginAnimation(OpacityProperty, animation);
}

private void KickoffFlashingAnimation(Control controlToFade)
{
    controlToFade.Dispatcher.BeginInvoke(new Action(() => 
        ToggleBackgroundFade(controlToFade))
    );
}

そしてすべてのスタイル

<Style x:Key="GroupBoxHeader" TargetType="{x:Type GroupBox}">
    ...
    <Setter Property="Background" Value="#00D6EFD1" />
</Style>

そのため、GroupBox を KickoffFlashingAnimation() メソッドに渡したいと考えています。

エラーなしで正常に実行されますが、グループボックスは最初に明るい緑色に設定された後、色が変わりません #ffd6efd1 ..
何かヒントはありますか?

4

1 に答える 1

0

こんにちは、上記のコードを試してみましたが、Groupbox で問題なく動作しました。Groupbox のすべてのコンテンツ領域が他のコントロールで満たされ、最終的に Background が非表示になるという問題がある可能性があります。テストするために、GroupBox を指定できます.Content 内の Controls の幅よりも幅が大きく、GroupBox のインスタンスを渡して上記のアニメーション コードを実行してみてください。これが役立つことを願っています。

于 2012-10-15T01:16:12.540 に答える