代码之家  ›  专栏  ›  技术社区  ›  SiN

在XAML WPF中插入Winforms窗体

  •  2
  • SiN  · 技术社区  · 14 年前

    我正在尝试在WPF XAML页面中集成WinForms表单。

    有办法吗?Windows窗体托管在WPF应用程序中,我目前可以将其作为新窗口加载,但不能在XAML页面中加载。

    1 回复  |  直到 14 年前
        1
  •  3
  •   Rap    14 年前

    将WinForms窗体放入WPF窗体中的WindowsFormsHost标记中是错误的。但是您可以从任何WPF项目实例化一个新表单。方法如下:

    假设您有两个项目“WinFormProj”和“WPFProj”。WinFormProj有一个名为“Login”的表单。

    首先在WPFProj项目中向WinFormProj添加一个引用。

    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>
    

    很简单,一旦你解开它。