[英]Zoom WPF-WebBrowser-Control Content
我想在wpf WebBrowser控件中显示一个网站。 但是内容太大了,因此有滚动条,如您在这里看到的:
我想在此窗口中显示整个网站,而不调整其大小。 我想在页面内部进行缩放,使其看起来像这样:
我想防止使用JavaScript进行此操作。 这里显示的WPF方式WPF WebBrowser-如何缩放内容? 也没有为我工作。 它总是说mshtml.IHTMLDocument2为null。
我还想防止使用WindowsForms这样做。 我希望有一种“仅XAML”的方式来解决此问题。
这是我的代码:
<Window x:Class="BrowserApp.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid>
<WebBrowser Source="https://www.google.de/"></WebBrowser>
</Grid>
</Window>
谢谢!
编辑
这是我在Webbrowser1_Navigated-Method中的代码,其中发生HRESULT:0x80020101-Error。
private void Webbrowser1_Navigated(object sender, NavigationEventArgs e)
{
double Zoom = 0.5;
mshtml.IHTMLDocument2 doc = Webbrowser1.Document as mshtml.IHTMLDocument2;
doc.parentWindow.execScript("document.body.style.zoom=" + Zoom.ToString().Replace(",", ".") + ";");
}
它总是说mshtml.IHTMLDocument2为null。
这与Web浏览器控件的线程模型有关。 您在XAML或代码中设置的所有导航操作都将在您离开构造函数之后完成。 这意味着您必须在导航事件触发后或计时器触发后执行缩放代码。
这就是我要做的。
public MainWindow()
{
InitializeComponent();
Webbrowser1.Navigate("http://www.google.com"); //won't complete until you leave this code block
Webbrowser1.Navigated += Webbrowser1_Navigated;
}
private void Webbrowser1_Navigated(object sender, NavigationEventArgs e)
{
//do your zoom code here
}
}
在您的XAML中,您可以引用该事件,但是您仍然必须执行缩放部分。
<WebBrowser Navigated="Webbrowser1_Navigated" Name="Webbrowser1"/>
当然,其他stackoverflow帖子的代码也可以缩放。
webBrowser.LoadCompleted += Web_LoadCompleted;
private void Web_LoadCompleted (object sender, NavigationEventArgs e)
{
// Place your code here
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.