C# WPF未出现在WinForms中的ElementHost中
我正在构建一个WinForms应用程序,并试图在其中包含一个WPF应用程序。所讨论的WPF是HighCore编写的日志查看器,可在此处找到:。C# WPF未出现在WinForms中的ElementHost中,c#,wpf,winforms,xaml,visual-studio-2012,C#,Wpf,Winforms,Xaml,Visual Studio 2012,我正在构建一个WinForms应用程序,并试图在其中包含一个WPF应用程序。所讨论的WPF是HighCore编写的日志查看器,可在此处找到:。 我学习了如何设置一切的教程。需要注意的是,当我在VS中展开ElementHost的选项时,它不会在“选择托管内容”下拉列表中显示日志查看器。然而,日志查看器在我的项目中(我通过“项目”菜单创建了它),因此我最终使用了以下代码: public MainForm() { InitializeComponent(); logViewer
我学习了如何设置一切的教程。需要注意的是,当我在VS中展开ElementHost的选项时,它不会在“选择托管内容”下拉列表中显示日志查看器。然而,日志查看器在我的项目中(我通过“项目”菜单创建了它),因此我最终使用了以下代码:
public MainForm()
{
InitializeComponent();
logViewer tslv = new logViewer();
elementHost.Child = tslv;
this.Controls.Add(elementHost1);
elementHost.BringToFront();
}
我添加了BringToFront()
,因为我在第一次运行代码时没有看到WPF。现在,情况是这样的:
但是,我的VS designer中的内容如下所示:
ElementHost位于SplitContainer中,而SplitContainer本身位于面板中(这是我在VS designer图像中选择的)。WPF不觉得需要受到ElementHost的尺寸或位置的约束(可能是叛逆)。例如,如果我将ElementHost的Dock属性设置为Fill,则WPF将填充整个应用程序窗口,而不仅仅是ElementHost中的空间 除了将WPF放在自己的窗口中或将WinForms应用程序移植到WPF之外,还有人有什么建议吗?删除这一行: this.Controls.Add(elementHost1)
您正在将elementHost添加到您表格的子项列表中+1,因为您提到了我的解决方案=)@HighCore我对WPF非常陌生,仍在尝试了解您的解决方案。我不知道如何从我的主WinForm中填充
LogEntries
(而且没有足够的代表对您的答案发表评论!grr)。例如,我无法获得日志条目
(我也查看了)。也许你可以解释或编辑你的答案?或者这应该是一个问题本身。是的,你可能应该为这个问题创建一个单独的问题LogEntries
是一个简单的ObservableCollection,您应该将其与WPF UI(可能是ViewModel的一部分)分开,并从外部(winforms或其他)操作ViewModel。您几乎不需要在过程代码中操纵WPF UI。