Windows runtime 为什么向图像添加操纵增量事件处理程序会阻止滚动?

Windows runtime 为什么向图像添加操纵增量事件处理程序会阻止滚动?,windows-runtime,Windows Runtime,我在尝试向一个应用程序添加诸如“收缩缩放”之类的功能时遇到了一个问题,该应用程序在ScrollView(FlipView)中有一个图像控件。图像控件和滚动视图控件位于FlipView的ItemTemplate中 其想法是,如果用户捏缩图像,它将激活代码,该代码将在图像控件中创建并显示图像的放大版本。(本例中的图像控件包含一个PDF页面,因此我们需要PDF页面的更大版本,而不仅仅是PDF页面的放大和模糊视图) 如果我将操纵增量事件处理程序附加到图像,它将捕获由收缩缩放手势生成的操纵增量事件,然后我

我在尝试向一个应用程序添加诸如“收缩缩放”之类的功能时遇到了一个问题,该应用程序在ScrollView(FlipView)中有一个图像控件。图像控件和滚动视图控件位于FlipView的ItemTemplate中

其想法是,如果用户捏缩图像,它将激活代码,该代码将在图像控件中创建并显示图像的放大版本。(本例中的图像控件包含一个PDF页面,因此我们需要PDF页面的更大版本,而不仅仅是PDF页面的放大和模糊视图)

如果我将操纵增量事件处理程序附加到图像,它将捕获由收缩缩放手势生成的操纵增量事件,然后我可以使用该手势创建PDF缩放效果。但是…现在它不会捕捉滚动(拖动?)手势。或者更确切地说,这些也会被操纵增量事件处理程序捕获。我宁愿避免在此时实现代码以编程方式处理滚动。我是否可以选择将操纵增量事件冒泡(或“超过”?)到任何可以处理滚动的对象?我认为这已经发生了,事件将出现在ScrollView上,然后ScrollView将处理滚动。但事情似乎不是这样的

我在操纵增量事件处理程序中将e.Handled设置为false。图像控件上的操纵模式设置为“全部”。我试过“缩放”,但没用


谢谢大家!

WinRT中的ScrollViewer针对性能进行了优化,并在引擎盖下使用DirectManOperation。这就是为什么从ScrollViewer中滚动和在其中使用手势都很棘手的原因

Rob Caplan(微软员工)的这篇博文提供了更多信息:

不幸的是,如果应用程序同时需要滚动和手势(例如,根据滚动检测交叉幻灯片),则没有好的解决方案。在这种情况下,在任何地方获取指针消息的唯一选项是在任何地方禁用直接操作,但这也会禁用滚动。要恢复该功能,应用程序需要检测滚动手势本身,然后使用ScrollToHorizontalOffset或ScrollToVerticalOffset或更新选定的索引,将ScrollViewer导航到新位置。这是一个棘手的问题,而且比让ScrollViewer完成它的工作要慢得多。如果可能的话,应该避免

希望这有帮助