动画* any * wpf控件的背景不透明度

时间:2012-10-15 00:45:26

标签: c# wpf

我想要一个效果,我可以为任何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 ..
有什么提示吗?

1 个答案:

答案 0 :(得分:0)

您好我已经尝试了您的上述代码,它与Groupbox一起工作正常。您的Groupbox可能存在问题,其所有内容区域都填充了最终隐藏其背景的其他控件。所以只是为了测试它你可以给你的GroupBox.Content更宽的宽度,然后通过传递GroupBox的实例尝试运行上面的动画代码。我希望这会有所帮助。