我的主要项目在 WPF 下,在我的解决方案中,我有:
- winform 名称为 Form1
- wpfForm 名称为 MainWindow.xaml
我想做这项工作:如果单击按钮,我在 MainWindow 中显示 Form1 与MDI完全一样
我的主要项目在 WPF 下,在我的解决方案中,我有:
我想做这项工作:如果单击按钮,我在 MainWindow 中显示 Form1 与MDI完全一样
感谢您在这种情况下帮助我,您的回答确实对我有帮助,但我找到了我的目标:我只是想在我的表单代码中使用 windows 窗体(form1)到 wpf 窗口(不是我的 windows 窗体控件),我只是更改继承form1 到 Usercontrol 而不是这样的 Form
public partial class Form1: UserControl
{
/// my code ...
}
因此我可以在我的windosformshost中使用这个用户控件,因为我的表单现在是用户控件(干得好)但我遇到了另一个问题,我的控件没有视觉样式,因为我在msdn中搜索,我从这个链接visual_Problem得到了答案答案在enable_visual中 ,我的意思是,在 winformshot 托管我的 windows 窗体(ofcource 我的用户控件)之前,我应该编写以下代码:
System.Windows.Forms.Application.EnableVisualStyles();
感谢您的意见。最好的问候,Hothreeyn。
来自 MSDN:WindowsFormsHost 类
使用 WindowsFormsHost 元素将 Windows 窗体控件放置在 WPF 元素或页面中。
若要在 Windows 窗体控件或窗体中承载 WPF 元素,请使用 ElementHost 控件。
若要在 WPF 元素中承载 Windows 窗体控件,必须将 Windows 窗体控件分配给 Child 属性。
我认为您应该在 WPF 中处理 MDI 布局,然后在 WPF 子窗口中放置 WindowsFormsHost 控件,并在创建 Windows 窗体控件后将其分配为 WindowsFormsHost 的子级。
有关WPF中的控件,请参阅MSDN 文档。WindowsFormsHost
文档底部有一个示例,展示了如何使用它来将 WinForms 控件集成到 WPF 中。您需要做的就是将 更改MaskedTextBox
为您的控件:Form1
.
据我了解,您无法让整个 WinForm 与 WPF 互操作。您可以通过 WindowsFormHost 将 WinForm 控件放置在 WPF 表面上,但不能放置在窗体上。
如果您可以将 WinForm 表单的所有内容打包到 WinForm UserControl 中,那么您应该能够完成此操作。
使用WindowsFormHost
控件,您可以在 WPF 中使用 Windows 窗体控件。你可以参考这个链接。
WPF 没有对 MDI 的原生支持,你可以使用这个 wpfmdi.codeplex.com 或更复杂的这个 chronoswpf.codeplex.com