我为Update表单创建了一个新项目并使用了WinForms(我的主项目是使用WPF)。
所以我在MainWindow中制作了一些属性。其中之一是:
public Form Context
{
get { return this; }
}
当MainWindow是WinForm时,这很好。但它不是WPF窗口。 因此,由于错误,这不起作用。
The type MainWindow can not be converted in System.Windows.Forms.Form
有没有办法解决这个问题?
我尝试使用WindowsFormsHost。所以我将WindowsFormsHost添加到我的MainWindow:
<WindowsFormsHost>
<wf:Form x:Name="form" />
</WindowsFormsHost>
编辑MainWindow.xaml.cs如下:
public Form Context
{
get { return form; }
}
但是我得到了一个XamlParseException。
答案 0 :(得分:1)
WinForms和WPF是不同的框架,都踩着Win32 API。在这种情况下,对象Form和Window之间唯一的共同点是HWND,即窗口的句柄。 理论上,如果两个窗口彼此都知道HWND,他们可以通过他们的消息队列进行通信 - 发送(发布)消息(...),这可能不是您正在寻找的。 最好的方法是坚持使用其中一个框架或将您的Form转换为控件并将其托管在WindowsFormsHost中。