public void SetZoom(double zoom)
{
if (zoom <= 0.00)
{
throw new ArgumentOutOfRangeException("zoom");
}
double oldZoom = xRootScaleTransform.ScaleX;
//double oldScrollX = xScrollViewer.HorizontalOffset / xScrollViewer.ScrollableWidth;
//double oldScrollY = xScrollViewer.VerticalOffset / xScrollViewer.ScrollableHeight;
xRootScaleTransform.ScaleX = zoom;
xRootScaleTransform.ScaleY = zoom;
xRoot.Width = xRoot.Width * zoom / oldZoom;
xRoot.Height = xRoot.Height * zoom / oldZoom;
// TODO: maintain center point of view.
}