我正在尝试使用WebBrowser xaml控件呈现一些html内容。 html内容的长度各不相同。控件放置在当前具有单行的网格内。我想在Web浏览器之前和之后放置其他控件(StackPanels)并在整个布局中进行垂直滚动。
Grid x:Name="LayoutRoot">
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<phone:WebBrowser
Grid.Row="0"
x:Name="webBrowser1"
Background="Black"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
IsScriptEnabled="False"
Visibility="Visible">
</phone:WebBrowser>
<ProgressBar Visibility="Visible" x:Name="LoadingProgress" Indeterminate="True"></ProgressBar>
</Grid>
但是我只能滚动当前视口,强制将固定高度应用到webbrowser。
我的目标理论结构是:
并且想要滚动scrollViewer,而不是webbrowser,因此浏览器会根据加载的内容自动调整大小。有什么建议吗?
答案 0 :(得分:1)
我在MSDN上发现了一篇很好的博文,解决了这个问题:http://blogs.msdn.com/b/mikeormond/archive/2010/12/16/displaying-html-content-in-windows-phone-7.aspx
博客最初试图完成与你相同的事情,将浏览器放入滚动查看器等等。但发现它对于较大的html页面效果不佳,他们采用了不同的解决方案来禁用滚动和缩放在浏览器控件中。希望这可以提供帮助:
在处理较长的内容之前,这样做很好;当。。。的时候 WebBrowser控件的高度设置为超过1800px 应用程序会崩溃。事实证明,这是一种更简单的方法 达到同样的效果。
而不是禁用WebBrowser控件上的命中测试(然后 将其嵌入ScrollViewer中以重新启用滚动 经验),可以在HTML中设置meta标签来声明 用户不应该缩放内容。
或
这些元标记将视口的宽度设置为320px(以避免 水平滚动)并指定用户不应该 缩放视口。将这些元标记添加到注入的HTML中 实现WebBrowser控制和所需的行为。
答案 1 :(得分:0)
要从webview获取高度,可以使用
lodash
window.external.notify("rendered_height=document.getElementById('yourId').offsetHeight")
中的
以下是处理滚动和调整大小的AdaptativeWebview的完整示例