我正在开发一个支持触摸屏的WPF应用程序,我遇到了一个问题:当使用触摸屏滚动ScrollViewer
时,当滚动到达ScrollViewer
顶部或底部时,整个应用程序窗口会被拖动一点。是否可以禁用此行为?
答案 0 :(得分:5)
我知道人们不喜欢仅链接答案,但我遇到了这个问题,并使用此链接来帮助:
C# wpf scrollviewer not working like windows store app
默认行为是滚动到顶部或底部或侧边限制时让应用程序反弹。使用ManipulationBoundaryFeedback事件并将其添加到后面的代码中。
private void OnManipulationBoundaryFeedback(object sender, ManipulationBoundaryFeedbackEventArgs e)
{
e.Handled = true;
}
答案 1 :(得分:0)
可能只是在事件冒泡之前处理事件(有关此信息,请参阅MSDN https://msdn.microsoft.com/library/ms742806(v=vs.100).aspx。)
订阅
ScrollViewer.PreviewTouchUp
有了这个
private void UIElement_OnPreviewTouchUp(object sender, TouchEventArgs e)
{
e.Handled = true;
}
答案 2 :(得分:0)
阅读完.NET源代码后,我发现了这一点:
public class CustomScrollViewer : ScrollViewer
{
protected override void OnManipulationDelta(ManipulationDeltaEventArgs e)
{
base.OnManipulationDelta(e);
e.ReportBoundaryFeedback(new ManipulationDelta(new Vector(0, 0), 0, new Vector(0, 0), new Vector(0, 0)));
}
}
当用户尝试滚动太远时,会向操作系统报告其他增量,这会拦截该行为。确保对基础实现的调用是第一个。此外,如果您在模板中使用带有ScrollViewer
的控件,则可以尝试订阅该事件,但我不能保证它会起作用。这都是谁最后报道的问题。