2012-10-15 51 views
2

我想要一个效果,我可以为任何GroupBox控件的背景不透明度设置动画效果。
这会给我额外的视觉通知,如果有什么改变 - 我可以刷新控制指​​示新的状态。*任何* wpf控件的动画背景不透明度

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> 

所以我想任何分组框传递给KickoffFlashingAnimation()方法。

它运行良好,没有错误,但组合框在初始设置为淡绿色后不会改变颜色#ffd6efd1 ..
任何提示?

+0

我真的不知道,“控”有“背景”的属性,但也许是因为你已经错过了“control.BackColor”它不会改变颜色?我只是猜测:) –

+0

可能要广告,如果(controlToFade是分组框中){}检查,除非你想其他控件响应 – Wanabrutbeer

回答

0

您好我曾尝试你上面的代码和它的工作罚款GROUPBOX与me.There可能是问题,你GROUPBOX所有内容区域充满了最终掩盖其Background.So其他控件只是为了测试它,你可以给你的GroupBox.Content更多的宽度比其中的控件,然后尝试通过传递GroupBox的实例来运行你的上述动画代码。我希望这会有所帮助。

+0

我一般都在分组框中少数(标签)的控制,但全部用透明背景。感谢您的提示.. – DefenestrationDay

+0

可以请您显示您的GroupBox的XAML – ethicallogics