我正在尝试禁用手机中的滚动功能:我的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 =“已禁用”这样的文件,但这不起作用,就像建议它只会隐藏可见性......
答案 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