2010-11-25 103 views
3

我喜歡在WPF中使用C#將WebBrowser控件添加爲Canvas背景。我該怎麼做呢?我目前有以下代碼。但不起作用。作爲畫布的WebBrowser背景

<Canvas 
    Name="canvas" 
    Grid.ColumnSpan="4" 
    Grid.Row="1" 
    MouseDown="Canvas_MouseDown" 
    MouseMove="Canvas_MouseMove" 
    MouseUp="Canvas_MouseUp" 
    Margin="0,0,0,16" 
    Grid.RowSpan="3"> 
    <Canvas.Background> 
    <VisualBrush> 
     <VisualBrush.Visual> 
     <WebBrowser 
      x:Name="wbMain" 
      Height="246" 
      Width="592" /> 
     </VisualBrush.Visual> 
    </VisualBrush> 
    </Canvas.Background> 
</Canvas> 
+0

您的代碼在哪裏? – Darbio 2010-11-25 01:14:08

回答

0

就我所知,WebBrowser控件不是標準的WPF控件。它基本上是一個帶有IE控件的嵌入式窗口。我相當肯定你不能以這種方式使用它。

+0

雖然我可能錯了,但當然;) – 2010-11-25 01:22:36

0

這是一個嵌入式IE窗口,所以你不能以這種方式使用它。

你可以,但是,使用Chrome一個辦法:http://chriscavanagh.wordpress.com/2009/08/25/a-real-wpf-webbrowser/

你也可以把它映射到一個表面,以動畫播放等

+0

這個東西是否也可以從C#中的JavaScript和JavaScript方法調用C#方法? – jiga 2010-11-25 03:11:43

+0

對不起,還沒有嘗試過那些。 – SteveCav 2010-11-25 21:13:21

1

你不能做到這一點。網頁瀏覽器控件是一個Internet Explorer ActiveX包裝器,其結果是空域問題。

但是,您可以使用<Popup>控件在其上繪製它,或者如果您不介意丟失交互性,請嘗試生成網頁圖像並將其用作Canvas背景。

如果你正在考慮使用WPF Chrome wrapper by Chris Cavanagh,請記住:

  • 它還不支持COM可見(所以沒有window.external JavaScript方法返回到您的C#代碼)
  • 它有一個依賴在Awesomium這是僅供非商業用途免費使用。
  • 因爲它需要嵌入鉻,它將增加超過10MB到您的代碼大小鉻