2012-10-15 98 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