Goo*_*ofy 5 c# wpf webbrowser-control autoresize windows-phone-8
我有webbrowser控件我在哪里显示内容.
这是代码:
<Grid MinHeight="80"
Grid.Row="2"
Background="Red"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch">
<phone:WebBrowser Name="webBrowser1"
Height="Auto"
IsScriptEnabled="True"
ScriptNotify="webBrowser1_ScriptNotify"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
VerticalContentAlignment="Center"
HorizontalContentAlignment="Center"
Foreground="Black" Width="Auto"></phone:WebBrowser>
</Grid>
Run Code Online (Sandbox Code Playgroud)
在.CS文件中;
webBrowser1.NavigateToString("<html><head></head><body bgcolor=#d5e1f3><p style=font-family:arial><font size=3><center>" + content + "</center></font></p></body></html>");
Run Code Online (Sandbox Code Playgroud)
这里的内容是:
string content = "Which word in the following sentence is the subject?<I>Paris is beautiful during Spring.</I>Which word in the following sentence is the subject Which word in the following sentence is the subject Which word in the following sentence is the subject";
Run Code Online (Sandbox Code Playgroud)
但我已经搜索了这个问题并找到了很多帖子但是没有一个对我有用:
2)http://dan.clarke.name/2011/05/resizing-wp7-webbrowser-height-to-fit-content/
4)http://i.nt.ro/how-do-you-resize-a-webbrowser-control-to-fit-on-a-html-element/
如何解决这个问题?
编辑
好的完整的XAMl:
<phone:PhoneApplicationPage
x:Class="POCBase.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
FontFamily="{StaticResource PhoneFontFamilyNormal}"
FontSize="{StaticResource PhoneFontSizeNormal}"
Foreground="{StaticResource PhoneForegroundBrush}"
SupportedOrientations="Portrait" Orientation="Portrait"
mc:Ignorable="d"
shell:SystemTray.IsVisible="True">
<!--LayoutRoot is the root grid where all page content is placed-->
<Grid x:Name="LayoutRoot" Background="Transparent">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<!--TitlePanel contains the name of the application and page title-->
<StackPanel Grid.Row="0" Margin="12,17,0,28">
<TextBlock Name="AppName" Text="" Style="{StaticResource PhoneTextNormalStyle}"/>
<TextBlock Name="PageName" Text="page name" Margin="9,-7,0,0" Style="{StaticResource PhoneTextTitle1Style}"/>
</StackPanel>
<!--ContentPanel - place additional content here-->
<Grid MinHeight="80"
Grid.Row="1"
Background="Red"
HorizontalAlignment="Stretch"
VerticalAlignment="Center">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0.20*"></ColumnDefinition>
<ColumnDefinition Width="0.80*"></ColumnDefinition>
</Grid.ColumnDefinitions>
<Image Height="60"
Width="60"
Grid.Column="0"
Margin="0,0,20,0"
VerticalAlignment="Center"
HorizontalAlignment="Right"></Image>
<TextBlock Text="Addition Rule "
Name="Inilinetext"
FontSize="32"
Grid.Column="1"
TextWrapping="Wrap"
Padding="10,0,0,0"
VerticalAlignment="Center"
HorizontalAlignment="Left"
TextAlignment="Left"></TextBlock>
</Grid>
<Grid MinHeight="80"
Grid.Row="2"
Background="Red"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch">
<phone:WebBrowser Name="webBrowser1"
Height="Auto"
IsScriptEnabled="True"
ScriptNotify="webBrowser1_ScriptNotify"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
VerticalContentAlignment="Center"
HorizontalContentAlignment="Center"
Foreground="Black" Width="Auto"></phone:WebBrowser>
</Grid>
<Grid MinHeight="80"
Grid.Row="3"
Background="Red"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0.20*"></ColumnDefinition>
<ColumnDefinition Width="0.80*"></ColumnDefinition>
</Grid.ColumnDefinitions>
<Image Height="60"
Width="60"
Grid.Column="0"
Margin="0,0,20,0"
VerticalAlignment="Center"
HorizontalAlignment="Right"></Image>
<TextBlock Text="Addition Rule "
FontSize="32"
Grid.Column="1"
TextWrapping="Wrap"
Padding="10,0,0,0"
VerticalAlignment="Center"
HorizontalAlignment="Left"
TextAlignment="Left"></TextBlock>
</Grid>
</Grid>
</phone:PhoneApplicationPage>
Run Code Online (Sandbox Code Playgroud)
要实现此功能,您的 HTML 必须以 JavaScript 结尾,它将通知 Web 浏览器有关文档大小的信息。
您提供的代码缺少此脚本,因此不会处理任何脚本,也webBrowser1_ScriptNotify不会触发任何脚本。
CodeProject展示了它的样子。
编辑
我已经和它斗争了一段时间,发现渲染的 Html 的大小并不是那么简单(对我来说 - 我是 JavaScript 的新手,所以也许你会有更好的知识)。
您可以<script>在 html 中定义您的内容,然后最后运行它或在 中定义body onLoad:
string content = @"Which word in the following sentence is the subject?<I>Paris is beautiful during Spring.</I>Which word in the following sentence is the subject Which word in the following sentence is the subject Which word in the following sentence is the subject";
string newHtmlString = @"<head></head><body bgcolor=#d5e1f3
onLoad=""window.external.notify('rendered_height='+document.getElementById('content').offsetHeight);"">
<div id='content'><p style=font-family:arial><font size=3><center>";
newHtmlString += content + @"</center></p></div></body>";
Run Code Online (Sandbox Code Playgroud)
然后,在导航之后,以下事件应该更改您的 WebBrowser.Height:
private void webBrowser1_ScriptNotify(object sender, NotifyEventArgs e)
{
string[] valuePair = e.Value.Split('=');
if (valuePair != null && valuePair[0] == "rendered_height")
webBrowser1.Height = double.Parse(valuePair[1]);
}
Run Code Online (Sandbox Code Playgroud)