我想扩展斯基特已经写过的内容。
关键是,MS WP7 开发团队已经发布了“指南”,他们强烈建议不要放置(在同一页面上)多个接受同一组手势并对其做出反应的布局控件。例如,您不应该尝试将 Pivot 嵌入 Pano 中,因为水平滑动会发生冲突,并且很难区分其中哪个应该执行其操作。浏览器也是同样的情况:它响应所有的滑动和平移..所以不应该放在几乎任何滚动控件中!
现在,话虽如此,我想告诉你,克服它是可能的——尽管这可能并不容易,这取决于你的实际情况。
如果您仍想收到有关该事件的通知,这是最简单的事情gestures是使用 Silverlight Toolkit 库中的 GestureService/GestureListener。即使 WebBrowser 消除了原始操作事件,GestureListener 仍然能够通知您 - 因为它显然在某些“其他层”上监听,我现在不想进入它。只需获取库,添加引用它,执行如下操作:
GestureService.GetListener( targetcontrol ).Flick( myBrowserFlickHandler );
就完成了 - 每当有人轻弹控件时您都会收到通知,完全不考虑操作事件是否 e.handled=true 。这里有一个小小的免责声明:我不记得它在 7.0 上是否有效,因为 WebBrowser 的构建有点不同。在 7.1 和 7.5 上它应该可以工作。
但是,如果您将其应用于网络浏览器 - 您将收到通知 - 但网络浏览器也会收到它。这意味着,两个控件将会做出反应,如果您从处理程序中启动一些故事板,那么它在视觉上会变得非常排斥。
在 7.1 和几乎最新的 7.5 中,可以努力使用 Web 浏览器并完全控制它将看到哪个操作事件。因此,通过过滤 WB 的 mani 事件,并使用 GestureListener 自己查看事件,您既可以阻止 WB 执行任何操作,同时也可以用自己的操作进行响应。我在回答类似问题时对此进行了广泛的讨论,请参阅WP7 Pivot 控件和 WebBrowser 控件 https://stackoverflow.com/questions/5417293/wp7-pivot-control-and-a-webbrowser-control/7347448#7347448了解详情。但这并不是一件快速/容易/有趣的事情。
编辑:和MOST重要的是,它不能保证在future。在 7.1 和 7.5 SDK/OS/API 版本中,WebBrowser 控件内部的一些主要内部变化是可见的,如果它在接下来的几个版本中发生巨大变化,我不会感到惊讶。如果您不想在接下来的 1-2 年内再次访问该主题,请不要玩弄我在那里写的内容。