2010-07-18 71 views
5

如果我在任何页面上放置WebBrowser控件,页面不再响应WebBrowser下的操作事件。该页面的其他区域正常工作。Windows Phone 7 WebBrowser控件吞下操纵事件?

通过在页面中重写OnManipulationCompleted,然后在页面上放置一个WebBrowser控件,可以轻松确定。尝试刷过WebBrowser,OnManipulationCompleted永远不会被调用。

我无法将WebBrowser设置为IsHitTestVisible=false,因为我需要能够点击链接。但我希望页面响应左/右滑动。

任何人有任何明智的想法?或者知道这是否是当前版本中的错误?

+0

咕嘟咕嘟阅读,确认。我放弃了WebBrowser后面的一个列表框。通过任何明显的手段无法让滚动事件进入列表框。 – 2010-07-18 10:39:29

回答

2

这是我们实现WebBrowser的结果。触摸事件直接传递给浏览器引擎。一旦发生这种情况Silverlight基本上不在图片中。不幸的是,我想不出任何可能会给你想要的解决办法。 -Skeets,MS开发

+0

我在网页浏览器的顶部创建了一个透明的画布。尽管如此,这可以防止事件进入浏览器。 – Esa 2012-08-17 13:49:18

1

如果你真的它:

<Grid> 
    <phone:WebBrowser Source="http://www.microsoft.com" /> 
    <Rectangle Fill="Transparent" ManipulationCompleted="HandleManipulationCompleted"/> 
</Grid> 

但是,当然,它完全锁定了与Web浏览器控制交互而且也只是没有办法以呼应操纵事件到浏览器...

4

我想延长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年内再次重新讨论这个问题,不要去玩那些我在那里写过的东西。

-3

我认为你有一个更好的方式捕获操纵事件,如果是在WP7.5芒果,因为浏览器控件是完全不同的,这是我从这个link

+0

-1 @Prakash这是我写在这里的博客文章的直接剽窃:http://www.scottlogic.co.uk/blog/colin/2011/11/suppressing-zoom-and-scroll-interactions-在Windows Phone 7的浏览器控制/ – ColinE 2012-03-01 14:58:35

+0

@ColinE是的,我写在那里,我从链接中得到它。不应该这样做。 – Prakash 2012-03-02 06:24:15

+0

@ColinE如果你对此不满意,我只会给你的博客链接,而不是任何内容。 – Prakash 2012-03-02 07:45:38