获取WPF窗口上下文到表单

时间:2017-10-16 13:52:27

标签: c# wpf winforms

我为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。

1 个答案:

答案 0 :(得分:1)

WinForms和WPF是不同的框架,都踩着Win32 API。在这种情况下,对象Form和Window之间唯一的共同点是HWND,即窗口的句柄。 理论上,如果两个窗口彼此都知道HWND,他们可以通过他们的消息队列进行通信 - 发送(发布)消息(...),这可能不是您正在寻找的。 最好的方法是坚持使用其中一个框架或将您的Form转换为控件并将其托管在WindowsFormsHost中。