WebBrowser Windows Phone 8的自动高度

时间:2013-12-04 22:14:00

标签: c# xaml windows-phone-8 windows-phone scrollviewer

我正在尝试使用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
    • 的StackPanel
    • WebBrowser(可能在另一个stackPanel内)
    • 的StackPanel
    • ...
    • Stackanel

并且想要滚动scrollViewer,而不是webbrowser,因此浏览器会根据加载的内容自动调整大小。有什么建议吗?

2 个答案:

答案 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

<{1}}和window.external.notify("rendered_height=document.getElementById('yourId').offsetHeight")

中的

以下是处理滚动和调整大小的AdaptativeWebview的完整示例