2012-02-09 69 views
4

我有一個WPF應用程序,其中有一個嵌入式Web瀏覽器控件。我想在某個特定時間在網絡瀏覽器上顯示動畫,但問題在於WPF控件在網絡瀏覽器上保留時不可見。通過Web瀏覽器對WPF進行控制

有什麼方法可以顯示我的用戶對網頁瀏覽器的控制嗎?

回答

2

請回答我這個第一次,

這是Web瀏覽器控制WPF Web Browser控制或Winform WebBrowser控件在WinFormHost託管?

對於任何WPF控件顯示動畫過它,你探索......

  1. 配售的控制GridCanvas,然後放置拉伸Border(已在它運行的動畫)作爲最後一個網格/畫布的孩子?
  2. Adorner不斷變化的繪畫環境來模擬動畫?
  3. 透明Popup帶有動畫,其靜態放置完成(綁定到控件的絕對左側,頂部位置和實際高度&寬度屬性)在控件上?

嘗試使用Web瀏覽器控件的透明彈出辦法......

<Grid> 
     <WebBrowser x:Name="WebBrowser1"/> 
     <Popup IsOpen="{Binding StartAninmation}" 
       AllowsTransparency="True" 
       Grid.RowSpan="99" 
       Grid.ColumnSpan="99" 
       Placement="Center" 
       Width="{Binding ActualWidth, 
           ElementName=WebBrowser1, 
           Mode=OneWay}" 
       Height="{Binding ActualHeight, 
           ElementName=WebBrowser1, 
           Mode=OneWay}" 
       PlacementTarget="{Binding ElementName=WebBrowser1}" 
       Opacity="0.5" 
       Margin="3"> 
      <TextBlock Text="Loading ..."/> 
     </Popup> 
</Grid> 

其中一個一定會在你的情況下工作。

+4

WPF Web瀏覽器控件在技術上是一個打包的WinForms WebBrowser控件,因此它在WinForms圖層中呈現,該圖層始終位於WPF圖層上方。 Adorners和Popups因此不會工作:( – SvenG 2012-02-09 09:59:20

+1

據我記憶,我已經成功使用了Transparent'Popup'。 – 2012-02-09 10:04:48

+1

+1,即使我已經使用了透明彈出窗口來滿足這個確切要求。 – 2012-02-09 10:34:17

1

不幸的是,由於操作系統渲染WinForms和WPF內容的順序,WPF Webbrowser控件(基本上是一個包裝的WinForms WebBrowser控件)無法實現這一功能。

參見: Is there a way to render WPF controls on top of the wpf WebBrowser control?

有一個第三方應用程序Awsomium,應該使之成爲可能。

編輯:另一種可能性是在WebBrowser控件上方呈現無框窗口。但將它保持在正確的位置/ z順序有點棘手。

1

CefSharp提供基於Chromium/V8的純WPF瀏覽器控制,不受Microsoft WebBrowser控件的空域問題(免責聲明:我是CefSharp的維護者)。

+0

這是不可能的建立。 – 2012-11-27 11:07:10

+1

無需構建,您可以使用二進制版本:https://github.com/ataranto/CefSharp/downloads – anthony 2012-11-27 23:17:05

+0

安東尼,怎麼不可能建立順便說一句? :)我剛剛嘗試過我的VS2012並失敗。我嘗試了chillitom的分支和你的分支。抱怨外部引用的負載。 – 2013-04-23 10:47:13