C# 带有触摸惯性的WPF列表框可下拉整个窗口

C# 带有触摸惯性的WPF列表框可下拉整个窗口,c#,wpf,listbox,touch,C#,Wpf,Listbox,Touch,我有一个为触摸屏构建的全屏幕WPF应用程序,在主屏幕上有一些列表框 当我轻弹“Listbox”时,它会很好地滚动,但是当它到达列表的末尾时,整个应用程序会从屏幕的顶部被拉下来,我能以某种方式停止这种行为吗 还有其他人看到过吗?是的,ListBox(或者更确切地说,默认ListBox模板中的ScrollViewer)的默认行为很奇怪——当我第一次看到它时,我认为这一定是一个恶作剧。事实上,很难找到任何关于它的文档,但有一点需要简要介绍: 操纵边界反馈事件使应用程序或组件能够在对象触及边界时提供视觉

我有一个为触摸屏构建的全屏幕WPF应用程序,在主屏幕上有一些
列表框

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


还有其他人看到过吗?

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

操纵边界反馈事件使应用程序或组件能够在对象触及边界时提供视觉反馈。例如,Window类处理OperationBoundaryFeedback事件,以使窗口在遇到边缘时稍微移动

因此,一种解决方法是在列表框上处理操纵边界反馈,并将Handled设置为true:

<ListBox ManipulationBoundaryFeedback="OnManipulationBoundaryFeedback">            
  // ...
</ListBox>

这个答案对我的申请很有帮助。还有一点:如果要禁用窗口中所有控件的边界反馈,应将操纵边界反馈句柄放在窗口的第一个面板上,而不是窗口本身。@BrunoV
protected override void OnManipulationBoundaryFeedback(操纵边界反馈事件参数e){e.Handled=true;//base.OnManipulationBoundaryFeedback(e);}
窗口中
类为我工作。
private void OnManipulationBoundaryFeedback(object sender, ManipulationBoundaryFeedbackEventArgs e)
{
    e.Handled  = true;
}