具有触摸惯性的WPF列表框可以拉下整个窗口

我有一个专为触摸显示器构建的全屏WPF应用程序,我在主屏幕上有一些Listbox

当我轻弹“列表框”时,它滚动得很好,但是当它到达列表的末尾时, 整个应用程序从屏幕顶部被拉下来,我可以以某种方式停止这种行为吗?

有没有人见过这个?

是的,ListBox的默认行为(或者更确切地说,默认ListBox模板中的ScrollViewer) 奇怪 – 当我第一次遇到它时,我认为它一定是一个恶作剧。 事实上,很难找到任何关于它的文档 – 但这里简要提到:

ManipulationBoundaryFeedback事件使应用程序或组件在对象到达边界时提供视觉反馈。 例如,Window类处理ManipulationBoundaryFeedback事件,以使窗口在遇到其边缘时略微移动。

因此,解决它的方法是在ListBox上处理ManipulationBoundaryFeedback,并将Handled设置为true:

  // ...  

代码隐藏:

 private void OnManipulationBoundaryFeedback(object sender, ManipulationBoundaryFeedbackEventArgs e) { e.Handled = true; }