C#wpf scrollviewer不像windows store app那样工作
我目前正在使用WPF处理应用程序。 而且我不得不注意到与Windows Store App变体相比ScrollViewerfunction的差异。
当我在屏幕的边缘和ScrollViewer的边缘时,我想要滑动,以便我离开边缘。 我看到windows桌面或菜单栏(在屏幕底部)。 有没有解决方案来防止这种滚动行为发生? 当您滚动到屏幕边缘然后向后碰撞并看到下方的一些Windows平台时,它相当烦人(而且很丑!)。 Windows应用程序ScrollViewer中已修复此问题。
我尝试覆盖ScrollChanged
并检查是否fe horizontalOffset == 0 && horizontalChange < 0
并返回(如果是这种情况)。 但这种检查似乎不起作用(从那以后它可能已经太晚了)。 而我似乎无法找到Windowsapp store应用程序修复此问题的方式。
也许你们有个主意?
编辑: .NET 4.5.1中WPF项目的再现
这段XAML在WPF中重新创建了我的问题。 但是,在Windowsapp store应用中,问题似乎不存在。
滚动到和/或覆盖应用程序边缘时,如何防止此行为?
这是与滚动相关的默认Windows 8行为。 当您点击可滚动视图的边缘时,您的整个应用都会“反弹”。 这种情况发生在每一个案例中,并且是系统动画的一部分。 例如,您可以在很长的文件夹列表中的Windows资源管理器中看到它。 这只发生在滚动浏览时,如果我没记错的话,在非全屏应用程序上。 我目前无法访问Windows 8计算机来测试此声明, 并且很可能无法禁用此行为 。
Modern环境是一个完全独立的应用程序环境,并且根本不以相同的方式处理触摸手势。 这就是WinRT应用程序中不存在此行为的原因。
编辑 :此效果称为操纵边界反馈。 当操纵事件超出其容器的限制时触发。 您可以禁用它覆盖受影响的UIElement
上的OnManipulationBoundaryFeedback(ManipulationBoundaryFeedbackEventArgs)
方法,如下所示:
class NoTouchFeedbackWindow : Window { protected override void OnManipulationBoundaryFeedback(ManipulationBoundaryFeedbackEventArgs e) { e.Handled = true; } }
这也可以直接在您的ScrollViewer或链上的任何控件上完成。
您可以在以下位置找到有关此行为的更多信息
- http://msdn.microsoft.com/en-us/library/dd988680(v=vs.110).aspx
- http://msdn.microsoft.com/en-us/library/system.windows.uielement.onmanipulationboundaryfeedback(v=vs.110).aspx
希望这可以解决您的问题。