我在ScrollViewer中有一个带有画布的WPF应用程序。在画布上我有一些矩形,我沿着时间轴(左 - 右)拖动。这适用于鼠标,但在触摸屏上,如果画布比主窗体宽,我会得到奇怪的行为。首先,当您开始拖动矩形时,画布平移直到它滚动到极限,然后矩形开始移动。使用鼠标时我不会这样做。
另一个奇怪的是,如果我将画布(使用触摸)平移/拖动到滚动查看器的限制,则主窗体在与摇摄方向相反的一侧压缩20-50像素。一旦停止拖动,它就会弹回形状。这里发生了什么以及如何禁用此功能?
这似乎与ManipulationBoundaryFeedback有关,但我并不完全明白如何......
修改 因此,我可以通过将scrollviewer panningmode设置为矩形TouchDown处理程序中的PanningMode.None,然后将其设置回TouchUp处理程序中的PanningMode.Both来进一步了解。这解决了在矩形移动之前画布平移到极限的问题。
答案 0 :(得分:0)
好吧,我终于让我的应用程序与触摸工作。如上所述,在TouchDown事件中将PanningMode设置为None消除了ScrollViewer的问题。在TouchUp事件中将其重新设置为Both,重新启用它。这意味着我无法将矩形拖过ScrollViewer开始平移的点,但在我的情况下,这不是问题。
我在TouchMove事件期间触发了MouseLeftButtonDown事件也遇到了一些问题,所以我在TouchDown期间删除了它
-= new MouseButtonEventHandler(drag_start)
并在TouchUp期间重新添加它以消除毛刺行为。
+= new MouseButtonEventHandler(drag_start)
也许这将有助于将来的某个人......