在WinForm應用程式中嵌入WPF控制項

2021-09-05 21:49:44 字數 1821 閱讀 6074

我們知道,在

wpf介面上新增

winform

的控制項需要使用

windowsformhost

類。而在

winform

介面上新增

wpf控制項該如何做呢?有沒有類似的類呢?明顯是有的,

elementhost

就是為了在

winform

應用程式中嵌入

wpf元素而定義的。它繼承自system.windows.forms.control,是乙個

winform

控制項,但它知道如何顯示

wpf內容。

接下來演示如何使用

elementhost

來顯示乙個

wpf控制項——

button

,並與winform

中button

的顯示作個簡單的對比(

xp環境)。

1. 

建立乙個標準的

winform

工程,從工具欄中找到「wpf interoperability」專案,選擇其中的

elementhost

,將其拖拽到

form

中,如圖

1所示:

拖拽elementhost

到form中

2. 

簡單的調整一下

elementhost

的大小,因為預設情況下,

wpf控制項會佔據所有給予

elementhost

的空間。此外,我們檢視一下工程的

references

,可以看到,拖拽

elementhost

後,會自動新增必要的

wpf程式集(

presentationframework

、presentationcore

、windowbase

等)。

3. 

接下來我們拖拽乙個

winform button

到form

中,修改

button

的內容為「

button in winform

」,如圖

2所示:

新增winform button

4.  wpf

控制項只能在後台**中新增到

elementhost

中,我們在窗體的建構函式中建立

wpf控制項,如下面的**片段所示:

public partial class form1 : form

}elementhost

的child

屬性為uielement

型別,因此,它可以被設定成任何

uielement

物件。

5. 

按下f5

,執行winform

應用程式,

wpf的

button

控制項和winform

的button

控制項顯示如圖

3所示。可以看出,兩個

button

的預設字型明顯不同。

兩個button

的顯示

在winform嵌入外部應用程式

應朋友要求,需要將乙個第三方應用程式嵌入到本程式winform視窗,以前在vb6時代做過類似的功能,其原理就是利用windows api中findwindow函式找到第三方應用程式控制代碼,再利用setparent函式,將該控制代碼設定為本視窗的子視窗。網上搜尋大部分都是利用system.diagn...

在WinForm應用程式中嵌入WPF控制項

我們知道,在 wpf介面上新增 winform 的控制項需要使用 windowsformhost 類。而在 winform 介面上新增 wpf控制項該如何做呢?有沒有類似的類呢?明顯是有的,elementhost 就是為了在 winform 應用程式中嵌入 wpf元素而定義的。它繼承自system....

在WinForm應用程式中嵌入WPF控制項

我們知道,在 wpf介面上新增 winform 的控制項需要使用 windowsformhost 類。而在 winform 介面上新增 wpf控制項該如何做呢?有沒有類似的類呢?明顯是有的,elementhost 就是為了在 winform 應用程式中嵌入 wpf元素而定義的。它繼承自system....