我想延长Skeet已经写好的东西。
问题是,MS WP7开发团队已经发布了“指导方针”,他们高度不鼓励在同一页面放置多个布局控件,以接受和响应同一组手势。例如,您不应该尝试在Pano中嵌入Pivot,因为横向轻扫会发生冲突,并且很难区分哪些应该执行其操作。同样的情况是浏览器:它响应所有的滑动和平底锅......所以不应该放在几乎任何滚动控制!
说了这么多,我想告诉你可以克服它 - 虽然它可能会变得不容易,这取决于你的实际情况。
如果你仍然需要通知手势,最简单的事情就是使用Silverlight Toolkit库中的GestureService/GestureListener。即使WebBrowser将原始操作事件熄灭,GestureListener仍然能够通知您 - 因为它显然在某个“其他层”上侦听,我现在并不完全想要接受它。刚取库,添加引用它,这样做:
GestureService.GetListener(targetcontrol).Flick(myBrowserFlickHandler);
它完成 - 你得到通知时被e.handled上控制别人的笔触,具有完全没有操纵事件的有关= TRUE或不。这里的小声明:我不记得是否在7.0上有效,因为WebBrowser在那里有点不同。在7.1和7.5上它应该可以工作。
但是,如果你在WebBrowser上应用它 - 你将得到notif - 但webbrowser也会得到它。这意味着,2个控制器会作出反应,并且如果从处理程序内启动一些故事板,它会变得视觉上相当不友好。
在7.1和几乎当前的7.5上,可以使用WebBrowser和完全控制它将看到的操作事件。因此,通过过滤WB的mani事件,并通过使用GestureListener自己查看事件,您既可以阻止WB执行任何操作,也可以用自己的操作进行响应。我已经针对类似问题广泛地撰写了这篇文章,详情请参阅WP7 Pivot control and a WebBrowser control。尽管如此,这不是一个快速/简单/有趣的事情。
编辑:和MOST重要的是,它不能保证在未来到工作。在整个7.1和7.5 SDK/OS/API版本中,在WebBrowser控件内部,一些主要的内部正在进行的更改是可见的,如果它在接下来的几个版本中发生显着变化,我不会感到惊讶。如果你不想在未来的1 - 2年内再次重新讨论这个问题,不要去玩那些我在那里写过的东西。
咕嘟咕嘟阅读,确认。我放弃了WebBrowser后面的一个列表框。通过任何明显的手段无法让滚动事件进入列表框。 – 2010-07-18 10:39:29