2017-01-26 22 views
0

wpf WebBrowserコントロール内にWebサイトを表示したいと思います。しかし、あなたがここに見ることができるようにスクロールバーがあるように、コンテンツのサイズは、大にある:ズームWPF-WebBrowser-Controlのコンテンツ

enter image description here

私はそれをリサイズせずに、このウィンドウでサイト全体を表示したいと思います。 I'dが、それはこのようになりますように、ページ内でズームしたい:

enter image description here

I'd JavaScriptでそれをやって防ぐのが好き。ここに示されているWPFの方法はまた私のために働いていません。WPF WebBrowser - How to Zoom Content?それは常にmshtml.IHTMLDocument2がヌルであると言います。

また、Windowsフォームを使用しないようにしたいと思います。私は、この問題を解決する "唯一の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> 

ありがとうございました!

EDIT

これはHRESULT Webbrowser1_Navigated-法、内部の私のコードです:0x80020101:エラーが発生しました。

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(",", ".") + ";"); 
} 

答えて

0

それは常にmshtml.IHTMLDocument2がnullであると言います。

これは、Webブラウザコントロールのスレッドモデルと関係があります。 XAMLまたはコードで設定したナビゲーションは、コンストラクタを終了するまで完了しません。これは、Navigatedイベントの発生後またはタイマーの起動後にズームコードを実行する必要があることを意味します。

これは私がやる方法です。

  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"/> 

確かにthe other stackoverflow post's codeはズーミングで問題ありません。

+0

解決策を実装した後、例外が発生します。HRESULT:0x80020101 – L4c0573

+0

どのようなコード行がHRESULTをトリガしますか? –

+0

この行の中。 doc.parentWindow.execScript( "document.body.style.zoom =" + Zoom.ToString()。Replace( "、"、 "。")+ ";"); – L4c0573

0
webBrowser.LoadCompleted += Web_LoadCompleted; 

private void Web_LoadCompleted (object sender, NavigationEventArgs e) 
{ 
    // Place your code here 
} 
関連する問題