C# 用于Windows 8的Scrollviewer在缩放后不能正确平移
我的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
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
)才能看到新值。您可以尝试使用我编写的来设置偏移和缩放因子值的动画,但请注意,这些值有点粗糙,有些人的行为有问题。我最终决定按原样使用,但感谢您的建议。我最终决定按原样使用,但感谢您的建议。