2010-07-08 102 views
2

我試圖在WPF XAML頁面中集成一個WinForms窗體。 我見過使用WindowsFormsHost放置Windows窗體控件的示例,但不是用於集成整個窗體。在XAML WPF中插入Winforms窗體

有沒有辦法做到這一點? Windows窗體託管在WPF應用程序中,我目前能夠將其作爲新窗口加載,但不在XAML頁面內。

回答

3

將一個WinForms窗體放在WPF窗體的WindowsFormsHost標記中是一個錯誤。但是你可以從任何WPF項目實例化一個新表單。方法如下:

假設您有兩個項目「WinFormProj」和「WPFProj」。 WinFormProj有一個稱爲「登錄」的窗體。

首先將WPFProj項目中的引用添加到WinFormProj中。

然後在任何WPFProj元素的任何事件背後,這樣做:

var winFormWindow = new WinFormProj.Login(); 
winFormWindow.Show(); 
// or 
windFormWindow.ShowDialog(); 

如果不行,您可以將您的WinForms形成到在WindowsFormsHost存在好了一個用戶控件WPF標籤。要做到這一點,它往往是那樣簡單......

轉到類的聲明和變化:

public class Login : Form 

public class Login : UserControl 

接下來,在你的WPF的形​​式,添加的WinForms項目作爲XML命名空間:

xmlns:winForms="clr-namespace:WinFormsProj;assembly=WinFormsProj" 

最後,將它添加到您的網格/ StackPanel中/無論你想要用戶合作諾託將被託管:

<WindowsFormsHost Name="LoginControl"> 
    <winForms:LogIn /> 
</WindowsFormsHost> 

很簡單,一旦你揭開神祕面紗。