我试图在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>
很简单,一旦你揭开神秘面纱。