我正在构建一个 WinForms 应用程序,并尝试在其中包含一个 WPF 应用程序。有问题的 WPF 是 HighCore 编写的日志查看器,可以在此处找到:Implementing a log viewer with WPF .
我关注了this有关如何设置一切的教程。需要注意的一件事是,当我在 VS 中展开 ElementHost 的选项时,它不会在“选择托管内容”下拉列表中显示日志查看器。然而,日志查看器位于我的项目中(我通过项目菜单创建了它),所以我最终使用了这一点代码:
public MainForm()
{
InitializeComponent();
logViewer tslv = new logViewer();
elementHost.Child = tslv;
this.Controls.Add(elementHost1);
elementHost.BringToFront();
}
我添加了 BringToFront()
因为我第一次运行代码时没有看到 WPF。现在,发生的事情是这样的:
但是,我的 VS 设计器中的内容如下所示:
ElementHost位于SplitContainer内,而SplitContainer本身位于Panel内(这是我在VS设计器图像中选择的)。
WPF 认为不需要受 ElementHost 的尺寸或位置的约束(也许它是反叛的)。例如,如果我将 ElementHost 的 Dock 属性设置为 Fill,则 WPF 会填充整个应用程序窗口,而不仅仅是 ElementHost 中的空间。
除了将 WPF 放在自己的窗口中或将 WinForms 应用程序移植到 WPF 之外,有人还有什么建议吗?
最佳答案
删除这一行: this.Controls.Add(elementHost1);
您正在将 elementHost 添加到表单的子项列表中
关于c# - WPF 未出现在 WinForms 的 ElementHost 内,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19595162/