具有触摸惯性的WPF列表框可以拉下整个窗口
我有一个专为触摸显示器构建的全屏WPF应用程序,我在主屏幕上有一些Listbox
。
当我轻弹“列表框”时,它滚动得很好,但是当它到达列表的末尾时, 整个应用程序从屏幕顶部被拉下来,我可以以某种方式停止这种行为吗?
有没有人见过这个?
是的,ListBox的默认行为(或者更确切地说,默认ListBox模板中的ScrollViewer) 很奇怪 – 当我第一次遇到它时,我认为它一定是一个恶作剧。 事实上,很难找到任何关于它的文档 – 但这里简要提到:
ManipulationBoundaryFeedback事件使应用程序或组件在对象到达边界时提供视觉反馈。 例如,Window类处理ManipulationBoundaryFeedback事件,以使窗口在遇到其边缘时略微移动。
因此,解决它的方法是在ListBox上处理ManipulationBoundaryFeedback,并将Handled设置为true:
// ...
代码隐藏:
private void OnManipulationBoundaryFeedback(object sender, ManipulationBoundaryFeedbackEventArgs e) { e.Handled = true; }