簡體   English   中英

* any * wpf控件的動畫背景不透明度

[英]Animate background opacity of *any* wpf control

我想要一種可以使任何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后,groupbox不會更改顏色。
有小費嗎?

嗨,我已經嘗試了上面的代碼,並且對我來說對Groupbox來說效果很好.Groupbox可能存在問題,即它的所有Content區域都填充了其他控件,這些控件最終隱藏了Background.So,只需對其進行測試,就可以給您的GroupBox內容比控件中的寬度更大,然后嘗試通過傳遞GroupBox的實例來運行上面的動畫代碼,希望對您有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM