我試圖在WPF XAML頁面中集成一個WinForms窗體。 我見過使用WindowsFormsHost放置Windows窗體控件的示例,但不是用於集成整個窗體。在XAML WPF中插入Winforms窗體
有沒有辦法做到這一點? Windows窗體託管在WPF應用程序中,我目前能夠將其作爲新窗口加載,但不在XAML頁面內。
我試圖在WPF XAML頁面中集成一個WinForms窗體。 我見過使用WindowsFormsHost放置Windows窗體控件的示例,但不是用於集成整個窗體。在XAML WPF中插入Winforms窗體
有沒有辦法做到這一點? Windows窗體託管在WPF應用程序中,我目前能夠將其作爲新窗口加載,但不在XAML頁面內。
將一個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>
很簡單,一旦你揭開神祕面紗。