禁用滚动手机:webbrowser windows phone 8 / 8.1

时间:2014-08-26 09:53:14

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

我正在尝试禁用手机中的滚动功能:我的Windows Phone 8应用程序中的webbrowser。我不想这样做的原因是我想在webview下放置一个带有项目的stackpanel,但仍然显示整个网页。

为了实现这一点,我得到了网页的总高度,并将网页浏览器的高度设置为网页高度。这将通过向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 =“已禁用”这样的文件,但这不起作用,就像建议它只会隐藏可见性......

2 个答案:

答案 0 :(得分:1)

您可以通过设置IsHitTestVisible =“false”来禁用WebBrowser控件的所有操作。缺点是您无法按下链接,导航等。

如果您只想禁用滚动,请查看此博文: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(运行时)中此代码的位置不相同。

当用户可以使用整个网页时,此黑客将取消滚动浏览器,但您无法抑制将webbrowser放入滚动浏览器的操作。

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

答案 1 :(得分:0)

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