代码之家  ›  专栏  ›  技术社区  ›  Ben Gracewood

Windows Phone 7 WebBrowser控件吞操作事件?

  •  5
  • Ben Gracewood  · 技术社区  · 14 年前

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

    这很容易通过覆盖 OnManipulationCompleted 在页面中,然后在页面上放置WebBrowser控件。试着在网络浏览器上滑动,然后 OnManipulation已完成 从来没有人打过电话。

    我无法将网络浏览器设置为 IsHitTestVisible=false

    有什么好主意吗?或者知道这是否是当前版本中的错误?

    4 回复  |  直到 12 年前
        1
  •  2
  •   Skeets    14 年前

    这是我们实现WebBrowser方式的结果。触摸事件直接传递给浏览器引擎。一旦发生这种情况,Silverlight基本上就不可能了。不幸的是,我想不出任何解决办法,可以给你什么你想要的-骷髅,德夫女士

        2
  •  4
  •   Community M-A    7 年前

    我想扩展一下斯凯特已经写的内容。

    关键是,mswp7dev团队已经发布了“指南”,他们强烈反对在同一页上放置多个接受并响应同一组手势的布局控件。例如,您不应该尝试在全景中嵌入一个轴,因为水平滑动将发生冲突,并且很难区分哪一个轴应该执行其操作。浏览器也是这样:它响应所有的滑动和平移。。所以不应该放在几乎任何滚动控件!!

    话虽如此,我想告诉你们,克服它是可能的,尽管根据你们的实际情况,它可能会变得不容易。

    手势

    GestureService.GetListener( targetcontrol ).Flick( myBrowserFlickHandler );
    

    然而,如果你把它应用到网络浏览器上,你会得到notif,但是网络浏览器也会得到它。这意味着,2个控件将做出反应,如果您从处理程序中启动一些情节提要,它将在视觉上变得非常排斥。。

    在7.1和几乎当前的7.5版本中,可以对WebBrowser进行严格的操作,并完全控制它将看到的操作事件。因此,通过过滤WB的mani事件,并使用GestureListener自己查看事件,您可以阻止WB做任何事情,同时可以用自己的操作来响应。我写了很多关于这个的文章来回应类似的问题,见 WP7 Pivot control and a WebBrowser control

    编辑:和 最多 未来

        3
  •  1
  •   nayato    13 年前

    如果你 真正地 想要它:

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

    但当然,它完全锁定了与web浏览器控件的交互,并且没有办法将操作事件回显到浏览器。。。

        4
  •  -3
  •   f3r3nc    12 年前

    如果是在WP7.5mango中,我认为您有更好的方法捕获操纵事件,因为浏览器控件是完全不同的,这是我从本文中读到的 link