public static IFutureAnimation Crear(MetroWindow ventana, EsquemaBarraTitulo esquema)
        {
            void AplicarColores()
            {
                ventana.TitleForeground = new SolidColorBrush(esquema.ColorTexto);
                ventana.WindowButtonCommands.LightMinButtonStyle   = esquema.EstiloBotones.Minimizar;
                ventana.WindowButtonCommands.LightMaxButtonStyle   = esquema.EstiloBotones.Maximizar;
                ventana.WindowButtonCommands.LightCloseButtonStyle = esquema.EstiloBotones.Cerrar;
            }

            void PrepararBarra()
            {
                if (ventana.WindowTitleBrush is SolidColorBrush brush)
                {
                    ventana.WindowTitleBrush = new SolidColorBrush(brush.Color);
                }
                else
                {
                    throw new InvalidOperationException("Cannot animate the title brush because it is not a SolidColorBrush");
                }
            }

            Timeline CrearAnimacion()
            {
                var animacion = new ColorAnimation
                {
                    To             = esquema.Color,
                    Duration       = Duracion,
                    EasingFunction = Easing
                };

                Storyboard.SetTarget(animacion, ventana);
                Storyboard.SetTargetProperty(animacion, RutaCambioColor);

                return(new Storyboard {
                    Children = { animacion }
                });
            }

            return(CrearAnimacion()
                   .ToFutureAnimation()
                   .Before(() =>
            {
                PrepararBarra();
                AplicarColores();
            }));
        }
 public static void Aplicar(MetroWindow ventana, EsquemaBarraTitulo esquema) =>
 Crear(ventana, esquema).BeginIn(ventana);