C# 用于Windows 8的Scrollviewer在缩放后不能正确平移

C# 用于Windows 8的Scrollviewer在缩放后不能正确平移,c#,windows-runtime,windows-store-apps,winrt-xaml,scrollviewer,C#,Windows Runtime,Windows Store Apps,Winrt Xaml,Scrollviewer,我的scrollviewer上的放大按钮有问题 查看器的内部是一个网格。在网格的内部是一组按特定顺序排列的图像。理想情况下,我希望通过点击按钮从一个图像切换到另一个图像,我已经做到了这一点。我有一个功能性的缩小按钮,但当我放大时…它不会滚动到我想要的地方。我使用图像的边距滚动到它 我似乎遇到的问题是,可滚动的高度和宽度不会更新 按“缩小”时,我调用: zoomFactor = 1; rosaryScroll.ZoomToFactor(zoomFactor); rosaryScroll.Inval

我的scrollviewer上的放大按钮有问题

查看器的内部是一个网格。在网格的内部是一组按特定顺序排列的图像。理想情况下,我希望通过点击按钮从一个图像切换到另一个图像,我已经做到了这一点。我有一个功能性的缩小按钮,但当我放大时…它不会滚动到我想要的地方。我使用图像的边距滚动到它

我似乎遇到的问题是,可滚动的高度和宽度不会更新

按“缩小”时,我调用:

zoomFactor = 1;
rosaryScroll.ZoomToFactor(zoomFactor);
rosaryScroll.InvalidateScrollInfo();
setRosaryState(rosaryState);
通过使用其边距和scrollviewer的大小将rosary state scrolls设置为查看器中的特定图像,以将图像置于scroll viewer的中心

rosaryScroll.ScrollToHorizontalOffset(
     (selectedBead.Margin.Left
     + (selectedBead.Width / 2)
     + rosaryScroll.Margin.Left / 2)
     * zoomFactor);
rosaryScroll.ScrollToVerticalOffset(
     (selectedBead.Margin.Top
     - (selectedBead.Height / 2)
     - rosaryScroll.Margin.Top / 2)
     * zoomFactor);
当我缩小(zoomFactor为5)时,可滚动的高度/宽度很好,很容易滚动。 rosaryScroll.ScrollableHeight=2336.0双精度 rosaryScroll.ScrollableWidth=2584.0双精度

但是当我放大(zoomFactor为1)时,可滚动的高度/宽度仍然很小 rosaryScroll.ScrollableHeight=84.0双精度 rosaryScroll.ScrollableWidth=0.0双精度


那么,在调用缩放后,如何更新此可滚动的高度和宽度?ValueAdvestRoLoFor()似乎无效。

< P>我会考虑放弃使用<代码> ScrollViewer < />代码,并根据操作事件和渲染转换推出自己的解决方案。正如您所注意到的-
ScrollViewer
并不是为简单的编程操作而编写的,它将使您很难实现它不是为之设计的任何自定义行为。属性不会根据请求立即更新,您可能需要等待一些事件(例如,
ViewChanged
)才能看到新值。你可以试着用我写的动画来抵消偏移和缩放因子的值,但是要注意这些有点杂乱,有些人的行为有问题。

< P>我会考虑放弃使用<代码> ScrollViewer < />代码,并根据操作事件和渲染转换推出你自己的解决方案。正如您所注意到的-
ScrollViewer
并不是为简单的编程操作而编写的,它将使您很难实现它不是为之设计的任何自定义行为。属性不会根据请求立即更新,您可能需要等待一些事件(例如,
ViewChanged
)才能看到新值。您可以尝试使用我编写的来设置偏移和缩放因子值的动画,但请注意,这些值有点粗糙,有些人的行为有问题。

我最终决定按原样使用,但感谢您的建议。我最终决定按原样使用,但感谢您的建议。