public static Transform PrepareTransform(UIElement target, Type targetTransformType)
{
var renderTransform = target.RenderTransform;
if (renderTransform == null)
{
target.RenderTransform = BuildTransform(targetTransformType);
return target.RenderTransform;
}
if (renderTransform.GetType() == targetTransformType)
return renderTransform;
var transformGroup = renderTransform as TransformGroup;
var transform = BuildTransform(targetTransformType);
if (transformGroup == null)
{
transformGroup = new TransformGroup();
transformGroup.Children.Add(renderTransform);
transformGroup.Children.Add(transform);
target.RenderTransform = transformGroup;
return transform;
}
transform = transformGroup.Children.SingleOrDefault(o => o.GetType() == targetTransformType);
if (transform == null)
{
transform = BuildTransform(targetTransformType);
transformGroup.Children.Add(transform);
}
return transform;
}