public override void EnsureAnimationCreated()
        {
            if (Animation == null)
            {
                TargetProperty = ExpressionHelper.ExpressionToPropertyName(expression);
                var animation = Target.Compositor.CreateExpressionAnimation();

                var ce = ExpressionHelper.ExpressionToCompositionExpression(animationexpression);
                Properties           = ce.Parameters;
                animation.Expression = ce.Expression;
                ExpressionHelper.ApplyParameters(Animation, ce.Parameters);

                Animation = animation;
            }
        }
 public static KeyFrame <T> Create <R, T>(double timestamp, Expression <Func <ExpressionContext <R, T>, T> > value, CompositionEasingFunction easing = null) => new KeyFrame <T>
 {
     Expression = ExpressionHelper.ExpressionToCompositionExpression(value), TimeStamp = (float)timestamp, Easeing = easing
 };
 public static KeyFrame <T> Create <R, T>(Expression <Func <ExpressionContext <R, T>, T> > value) => new KeyFrame <T>
 {
     Expression = ExpressionHelper.ExpressionToCompositionExpression(value)
 };