【问题标题】:Disable scrolling phone:webbrowser windows phone 8 / 8.1禁用滚动电话:webbrowser windows phone 8 / 8.1
【发布时间】:2014-08-26 09:53:14
【问题描述】:

我试图在我的 windows phone 8 应用程序中禁用 phone:webbrowser 中的滚动功能。我不想这样做的原因是我想在 webview 下面放置一个带有项目的堆栈面板,但仍然显示整个网页。

为此,我获取网页的总高度,并将 webbrowser 的高度设置为网页高度。这将通过将 javascript 添加到网络浏览器来完成。 webview 现在将包含整个网页及其下方的项目,并且这两个项目都在 ScrollViewer 中,因此您可以滚动浏览页面。

我现在唯一的问题是你可以滚动浏览器,所以你不能滚动滚动查看器。有人知道如何解决这个问题吗?

<ScrollViewer
    Grid.Row="1"
    Margin="0,0,0,0">

    <StackPanel  
        x:Name="ContentPanel"
        Margin="0,0,0,0">

        <phone:WebBrowser
            x:Name="webView" 
            Navigating="WebBrowserNavigating"
            LoadCompleted="WebBrowserLoadCompleted"
            ScriptNotify="browser_ScriptNotify"
            IsScriptEnabled="True"/>

            <StackPanel
                x:Name="CouponHolder"
                Margin="0,5,0,0">

            </StackPanel>
    </StackPanel>
</ScrollViewer>

我还查看了其他问题,但它们对我没有用: http://www.codeproject.com/Tips/718671/Disable-WebView-scrolling-in-Windows-Store-Apps

我看到很多人给像 VerticalScrollBarVisibility="Disabled" 这样的遮阳篷,但这不起作用,就像暗示它只会隐藏可见性......

【问题讨论】:

    标签: c# windows-phone-8 windows-phone-8.1


    【解决方案1】:

    您可以通过设置 IsHitTestVisible="false" 禁用所有使用 WebBrowser 控件进行的操作。缺点是不能按Links、Navigate等。

    如果您只想禁用滚动而不是查看这篇博文:http://www.scottlogic.com/blog/2011/11/17/suppressing-zoom-and-scroll-interactions-in-the-windows-phone-7-browser-control.html

    可以发现 WebBrowser 控件的 VisualTree 是这样的:

        \-WebBrowser
         \-Border
          \-Border
           \WebBrowserInteropCanvas (New in Windows Phone 8, missing in WP7)
            \-PanZoomContainer
             \-Grid
              \-Border (you need access this one)
               \-ContentPresenter
                \-TileHost
    

    可以在VisualTree中获取最后一个Border,并订阅ManipulationDelta、ManipulationStarted和ManipulationCompletedEvents。并设置 e.Handled = true;在事件处理程序中。小心点。例如,在 Windows 8.1 和 Windows Phone 8.1(运行时)中,此代码的 where 是不等价的。

    此 hack 将取消 webbrowser 的滚动,而用户可以与整个网页交互,但您将无法抑制将 webbrowser 放入 scrollviewer 的操作。

    一般来说,如果将 WebBrowser 放在 ScrollViewer 中,我认为您无法获得理想的用户体验

    【讨论】:

    • 感谢您的反应。在您发表评论后,我得出结论改变观点。因为这在 WP8.1 上不起作用,对吧?
    • 是的,我认为它不适用于 WP8.1 Runtime,但它可能仍适用于 WP 8.1 Silverlight。
    • 我正在开发的应用程序是第二个版本,所以我无法将其更改为 Silverlight。谢谢帮助
    【解决方案2】:

    经过几个小时的搜索,这个项目终于解决了我们在 Windows Phone 8.1 中的所有 webview 问题(反弹、触摸、自动高度等): https://github.com/romshiri/sizeable-webview

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多