我正在构建一个 WinForms 应用程序,并试图在其中包含一个 WPF 应用程序。有问题的 WPF 是由 HighCore 编写的日志查看器,可以在此处找到:使用 WPF 实现日志查看器。
我按照本教程了解如何设置所有内容。需要注意的一点是,当我在 VS 中展开 ElementHost 的选项时,它不会在“选择托管内容”下拉列表中显示日志查看器。然而,日志查看器在我的项目中(我通过项目菜单创建它),所以我最终使用了这段代码:
public MainForm()
{
InitializeComponent();
logViewer tslv = new logViewer();
elementHost.Child = tslv;
this.Controls.Add(elementHost1);
elementHost.BringToFront();
}
我添加BringToFront()
是因为我第一次运行代码时没有看到 WPF。现在,这就是发生的事情:
但是,我的 VS 设计器中的内容如下所示:
ElementHost 在一个 SplitContainer 内,它本身在一个 Panel 内(这是我在 VS 设计器图像中选择的)。
WPF 不觉得有必要被 ElementHost 的尺寸或位置所束缚(也许它是叛逆的)。例如,如果我将 ElementHost 的 Dock 属性设置为 Fill,WPF 会填充整个应用程序窗口,而不仅仅是 ElementHost 中的空间。
除了将 WPF 放置在自己的窗口中或将 WinForms 应用程序移植到 WPF 之外,有没有人有任何建议?