我遇到了银光变焦和平移功能的奇怪问题。我有滚动查看器,在他的边框内,并在内部边框我的主要内容(一些网格,文本框等...) 我的XAML看起来像这样:
XAML:
<Grid x:Name="Root" Background="Black">
<ScrollViewer x:Name="Scroller" HorizontalScrollBarVisibility="Visible">
<Border x:Name="Sizer">
<Grid x:Name="LayoutRoot" ShowGridLines="True" RenderTransformOrigin="0.5,0.5">
... my content which is been scaled ...
</Grid>
</Border>
</ScrollViewer>
</Grid>
缩放效果非常好。但是当我放大时我试图实现平移功能,这样我就可以浏览缩放内容。我的缩放部分看起来像这样:
protected override void OnMouseWheel(MouseWheelEventArgs e)
{
base.OnMouseWheel(e);
if (e.Delta > 0)
{
scale.ScaleX += 0.2;
scale.ScaleY += 0.2;
}
else if(e.Delta < 0 && (scale.ScaleX > 1 && scale.ScaleY > 1))
{
scale.ScaleX -= 0.2;
scale.ScaleY -= 0.2;
}
Sizer.Width = Sizer.Width * scale.ScaleX;
Sizer.Height = Sizer.Height * scale.ScaleY;
在最后两行的上面的代码中,我还调整了Sizer Width和Height(ScrollViewer中的边框)的大小,因为我不想自动更改Border的大小,以便ScrollViewer可以自己调整大小。但是有问题。滚动条没有捕获缩放后的所有内容。在调试期间,包含缩放内容和ScrollViewer的网格大小相同:
Sizer_H : 1153,20007324219, LayoutRoot_H : 1153,20004582405, Sizer_W : 2271,60009765625, LayoutRoot_W : 2271,60009026527
Sizer_H : 1614,20007324219, LayoutRoot_H : 1614,20010995865, Sizer_W : 3180,80029296875, LayoutRoot_W : 3180,8002166748
Sizer_H : 2582,40014648438, LayoutRoot_H : 2582,40023088455, Sizer_W : 5089,6005859375, LayoutRoot_W : 5089,6004550457
我想弄清楚我做错了什么......但没有运气..
谢谢!