Я узнал, как получить полосы прокрутки ScrollViewer для отображения после масштабирования элемента в ScrollViewer из этого поста: http://www.eightyeightpercentnerd.dreamhosters.com/?p=92
Теперь я пытаюсь заставить масштабированный объект (в данном случае холст) правильно центрироваться в ScrollViewer. Я позволю изображениям рассказать мою историю здесь (пожалуйста, помогите мне, прежде чем Screencast.com удалит мои файлы). ;
Мой XAML:
<ScrollViewer x:Name="ScrollViewer" VerticalAlignment="Top"
VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto"
Width="300" Height="300" Margin="0" Padding="0" Background="White">
<Canvas x:Name="DesignSurface" Background="Red">
<Canvas x:Name="Surface" Background="Blue" Height="100" Width="100">
<Canvas.RenderTransform>
<TransformGroup>
<ScaleTransform x:Name="SurfaceScaleTransform" />
</TransformGroup>
</Canvas.RenderTransform>
<!-- ... -->
</Canvas>
</Canvas>
</ScrollViewer>
При начальной загрузке мой синий холст отцентрирован и на 100%:

После уменьшения на 50% синий холст по-прежнему центрируется:

После увеличения на 400% и прокрутки, чтобы отобразить верхний левый угол синего холста:

После увеличения на 400% и прокрутки, чтобы отобразить нижний правый угол синего холста:

Итак, мой вопрос заключается в том, как правильно расположить синий холст по центру ScrollViewer или красный холст или что-то еще?