c# - WPF 未出现在 WinForms 的 ElementHost 内

标签 c# wpf winforms xaml visual-studio-2012

我正在构建一个 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。现在,发生的事情是这样的:

WPF not in ElementHost bounds

但是,我的 VS 设计器中的内容如下所示:

VS designer view

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/

相关文章:

c# - 将 TOTP Microsoft 身份验证器用于 ASP.NET MVC

c# - 处理 Excel 中的 "No cells were found."错误

c# - 如何删除 WinForms 中容器控件的边框填充?

c# - VB/C#.net 动态添加带有Background Worker的控件项

c# - 抓取时防止警告消息

javascript - Angularjs http post 到 c# 不起作用

c# - 如何使用C#中的存储过程在Oracle数据库中插入数据?

c# - 获取 WPF UIElement 的左上角坐标

wpf - 如何模拟 DragEventArgs

wpf - ListView 滚动条样式