我从这篇文章中了解了如何在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或红色画布中正确居中?或者其他什么?
答案 0 :(得分:5)
也许我弄错了你,但你尝试过将RenderTransformOrigin设置为Canvas吗? E.g:
<Canvas x:Name="Surface" Background="Blue" Height="100" Width="100"
RenderTransformOrigin="0.5, 0.5">
<Canvas.RenderTransform>
<TransformGroup>
<ScaleTransform x:Name="SurfaceScaleTransform" />
</TransformGroup>
</Canvas.RenderTransform>
<!-- ... -->
</Canvas>