我正在尝试将 WinForms 表单集成到 WPF XAML 页面中。 我见过使用 WindowsFormsHost 放置 Windows 窗体控件的示例,但没有见过集成整个窗体的示例。
有办法吗? 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"
最后,将其添加到您的 Grid/StackPanel/任何您希望托管用户控件的位置:
<WindowsFormsHost Name="LoginControl">
<winForms:LogIn />
</WindowsFormsHost>
一旦你揭开它的神秘面纱,就会变得非常简单。
关于wpf - 在 XAML WPF 中插入 Winforms 表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3204728/