WebBrowser阻止在PivotControl中滑动

时间:2011-03-01 17:36:53

标签: .net windows-phone-7 webbrowser-control pivot

我的应用程序和一些pivotItems WebBrowser中有PivotControl。 我注意到WebBrowser阻止滑动到下一个枢轴。我不确定这是否可以,因为 其他支点幻灯片和WebBrowser没有,这可能会令人困惑。这是 行为正确?有办法解决这个问题吗? (也许是小黑客)

这是我的xaml代码:

<controls:Pivot Title="MY PIVOT">
    <controls:PivotItem Header="first">
        <TextBlock Text="First Pivot" />
    </controls:PivotItem> 
    <controls:PivotItem Header="second">
        <TextBlock Text="Second Pivot" />
    </controls:PivotItem>       
    <controls:PivotItem Header="third">
        <phone:WebBrowser Source="http://www.stackoverflow.com" />
    </controls:PivotItem>
</controls:Pivot>

3 个答案:

答案 0 :(得分:5)

这是正确的行为。

WebBrowser可以为网页启用水平滚动。

这就是为什么不建议将这些控件放在Pivot中。例如,尝试将Map控件放在Pivot

我建议您从WebBrowser中取出Pivot并将其放在单独的页面中。

答案 1 :(得分:4)

由于这个原因,建议不要在MapWebBrowser内包含自己输入手势的控件(例如PivotPanorama控件)。但是,有一篇关于Preventing the Pivot or Panorama controls from scrolling的帖子可以为您提供解决方案。

答案 2 :(得分:0)

我怀疑这是一个正确的行为,因为它决定了这两个控件的可用性。 WebBrowser这样做的事实是无关紧要的,因为网页CAN禁止通过标签进行水平滚动,并强制渲染器重排文档,使其始终适合屏幕。在这种情况下,WebBrowser完全没有理由消耗Pivot所需的水平滑动。

几个月前我已经在一个应用程序中解决了类似的问题,并且使用Pivot - 它是可以避免的。我在这里写到了:Windows Phone 7 WebBrowser control swallows manipulation events?并且在那篇帖子中还有另一个链接到另一个我的...对不起,它分开了一点,我没时间把它放在一个地方。

如果我没记错的话,基本的诀窍是在WebBrowser上使用GestureListener,听一下电影并强制Pivot.SelectedIndex ++ / - 相应。它将允许轻弹和移动,但不会提供拖动页面然后捕捉到下一个/ prev页面的Pivot-y动画。对于这个动画,需要另一个技巧,IIRC,其他帖子是关于那个

请注意:GestureListener,而非操纵事件!!!那些被WebBrowser熄灭(API 7.0,7.1,7.5rc)(在7.1+中 - 由内部PanZoomContainer,在7.0中 - 它们被TileHost简单地沉默了)! GestureListener监听事件的“其他来源”,即使mani事件已经死亡,也能看到所有事件。在7.1+上有可能入侵WebBrowser并劫持使用mani-events,但它更难(我认为它也在我的另一篇文章中)