c# - *任何* wpf 控件的动画背景不透明度

标签 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..
有什么建议吗?

最佳答案

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

关于c# - *任何* wpf 控件的动画背景不透明度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12887980/

相关文章:

c# - .NET Framework 类的依赖倒置原则

c# - WPF:显示 GridView 项的上下文菜单

wpf - 将图像设置为 Button 的样式内容

c# - 从 wpf 中的文件路径列表填充 TreeView

c# - 在同一台计算机上的 .net 应用程序之间传输大数据

javascript - 如何通过使用 EF 单击从右侧到左侧更改数据

c# 点对点编程(最好是去中心化的)

c# - 我如何模拟 UserManager.GetRoles()

c# - DataTrigger 绑定(bind)到属性

c# - 如何将形状的属性绑定(bind)到业务模型的属性