我有一個WPF應用程序,其中有一個嵌入式Web瀏覽器控件。我想在某個特定時間在網絡瀏覽器上顯示動畫,但問題在於WPF控件在網絡瀏覽器上保留時不可見。通過Web瀏覽器對WPF進行控制
有什麼方法可以顯示我的用戶對網頁瀏覽器的控制嗎?
我有一個WPF應用程序,其中有一個嵌入式Web瀏覽器控件。我想在某個特定時間在網絡瀏覽器上顯示動畫,但問題在於WPF控件在網絡瀏覽器上保留時不可見。通過Web瀏覽器對WPF進行控制
有什麼方法可以顯示我的用戶對網頁瀏覽器的控制嗎?
請回答我這個第一次,
這是Web瀏覽器控制WPF Web Browser
控制或Winform
WebBrowser控件在WinFormHost
託管?
對於任何WPF控件顯示動畫過它,你探索......
Grid
或Canvas
,然後放置拉伸Border
(已在它運行的動畫)作爲最後一個網格/畫布的孩子?Adorner
不斷變化的繪畫環境來模擬動畫?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>
其中一個一定會在你的情況下工作。
不幸的是,由於操作系統渲染WinForms和WPF內容的順序,WPF Webbrowser控件(基本上是一個包裝的WinForms WebBrowser控件)無法實現這一功能。
參見: Is there a way to render WPF controls on top of the wpf WebBrowser control?
有一個第三方應用程序Awsomium,應該使之成爲可能。
編輯:另一種可能性是在WebBrowser控件上方呈現無框窗口。但將它保持在正確的位置/ z順序有點棘手。
CefSharp提供基於Chromium/V8的純WPF瀏覽器控制,不受Microsoft WebBrowser控件的空域問題(免責聲明:我是CefSharp的維護者)。
這是不可能的建立。 – 2012-11-27 11:07:10
無需構建,您可以使用二進制版本:https://github.com/ataranto/CefSharp/downloads – anthony 2012-11-27 23:17:05
安東尼,怎麼不可能建立順便說一句? :)我剛剛嘗試過我的VS2012並失敗。我嘗試了chillitom的分支和你的分支。抱怨外部引用的負載。 – 2013-04-23 10:47:13
WPF Web瀏覽器控件在技術上是一個打包的WinForms WebBrowser控件,因此它在WinForms圖層中呈現,該圖層始終位於WPF圖層上方。 Adorners和Popups因此不會工作:( – SvenG 2012-02-09 09:59:20
據我記憶,我已經成功使用了Transparent'Popup'。 – 2012-02-09 10:04:48
+1,即使我已經使用了透明彈出窗口來滿足這個確切要求。 – 2012-02-09 10:34:17