private void SetInitialRootPosition()
{
double x = Math.Round(-this.Margin.Left);
double y = Math.Round(-this.Margin.Top);
var transformGroup = (root.RenderTransform as TransformGroup).Clone();
if (transformGroup == null)
{
transformGroup = new TransformGroup();
transformGroup.Children.Add(root.RenderTransform);
root.RenderTransform = transformGroup;
}
var translateTransform = transformGroup.Children.OfType<TranslateTransform>().FirstOrDefault();
if (translateTransform == null)
{
transformGroup.Children.Add(new TranslateTransform() { X = x, Y = y });
}
else
{
translateTransform.X = x;
translateTransform.Y = y;
}
root.RenderTransform = transformGroup;
}