2010-07-08 64 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> 

很简单,一旦你揭开神秘面纱。