2010-08-31 37 views
0

我需要繪製HTML頁面。頁面顯示在Frame元素中。 問題是InkCanvas無法使用Frame。 我試圖插入TextBlock而不是Frame - 繪畫作品。WPF:InkCanvas + Frame

不起作用:

<Frame Grid.Row="1" Source="http://google.com/"></Frame> 
<InkCanvas Grid.Row="1" x:Name="inkCanvas" Background="Transparent"></InkCanvas> 

工作:

<TextBlock Grid.Row="1" Margin="10" Text="Some text"></TextBlock> 
<InkCanvas Grid.Row="1" x:Name="inkCanvas" Background="Transparent"></InkCanvas> 

回答

1

當幀控制導航到HTML內容,框架控件內部實例化本地的WebBrowser ActiveX控件。這涉及HWND互操作。因此,"airspace proplem"發揮作用。它基本上意味着沒有WPF內容可以與AcitveX HWND重疊。您可以通過將覆蓋層包裹到另一個HWND中來部分解決此問題(例如,使用Winfows Forms和ElementHost)。但是這個解決方案不會讓你在覆蓋層中具有透明度。

您可以嘗試的另一個技巧是使用WindowsFormsHost來承載Windows Forms Browser Control而不是使用幀。

最後但並非最不重要你可以使用Chromium WPF Webbrowser Control而不是幀控制,如果你能負擔得起。它基於Awesomium庫。不幸的是只有free for non commercial use。這是唯一的解決方案,允許您使用所有先進的WPF好東西,如變換(旋轉,歪斜等),位圖效果或透明度等寬度的其他兩個解決方案,你綁定到一個固定的不透明矩形。

+0

感謝您的詳細解答! – Rover 2010-08-31 10:56:17