c# - 使用 WPF 动画淡出任何控件

标签 c# .net wpf animation

我想在我的 WPF 项目中切换控件(按钮、文本框、面板等)的不透明度,并想检查我是否正确完成了操作。

我的问题是:这是您通常用 XAML 编写的功能类型,还是您会使用类似于下面的代码来实现淡入/淡出结果?

internal static class AnimationExtensions
{
    internal enum TransitionSpeed
    {
        Instant = 0,
        Fast = 100,
        Normal = 200,
        Slow = 500
    }

    /// <summary>
    /// Toggles the opacity of a control.
    /// </summary>
    /// <param name="control">The control.</param>
    internal static void ToggleControlFade(this Control control)
    {
        control.ToggleControlFade(TransitionSpeed.Normal);
    }

    /// <summary>
    /// Toggles the opacity of a control.
    /// </summary>
    /// <param name="control">The control.</param>
    /// <param name="speed">The speed.</param>
    internal static void ToggleControlFade(this Control control, TransitionSpeed speed)
    {
        Storyboard storyboard = new Storyboard();
        TimeSpan duration = new TimeSpan(0, 0, 0, 0, (int)speed); //

        DoubleAnimation animation = new DoubleAnimation { From = 1.0, To = 0.0, Duration = new Duration(duration) };
        if (control.Opacity == 0.0)
        {
            animation = new DoubleAnimation { From = 0.0, To = 1.0, Duration = new Duration(duration) };
        }

        Storyboard.SetTargetName(animation, control.Name);
        Storyboard.SetTargetProperty(animation, new PropertyPath("Opacity", 0));
        storyboard.Children.Add(animation);

        storyboard.Begin(control);
    }
}

您可能会说我对 WPF 非常非常陌生。

谢谢

最佳答案

我倾向于在需要在动画后执行操作的地方或动画依赖于复杂触发器的地方找到代码隐藏是最好的地方,否则 XAML 是放置动画的好地方。 (我通常为转换或简单的“onclick”类事件执行此操作。

关于c# - 使用 WPF 动画淡出任何控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2236346/

相关文章:

c# - 在 Visual Studio 中如何为调试和发布版本添加特殊情况?

c# - .net 框架的 AddMicrosoftIdentityWebApiAuthentication 模拟

c# - 如何确定 Console.Out 是否已重定向到文件?

c# - 使用 WPF 和 MVVM 模式将值从子窗口传递到父窗口

c# - 我应该在类名中包含 namespace 提示吗?

c# - 如何在三个类中处理事件

c# - 在文本框中从右到左输入?

mysql - 在 .Net 3.0 环境中使用 MySQL 安装 DotNetNuke 7?

c# - WPF MVVM 本地化 C#、运行时

c# - 应用程序启动后更改应用程序图标