将WPF集成到窗口应用程序中
本文关键字:应用程序 窗口 WPF 集成 | 更新日期: 2023-09-27 18:03:45
我是wpf应用的新手。我正在做窗口应用程序。它有许多模块。它的一个模块是在WPF中,与项目分开。所以我想把wpf应用程序集成到窗口应用程序项目中。
你的问题不清楚。然而,如果你试图在WinForms应用程序中托管一个WPF对象,那么是的,这是可能的。
可以在这里找到一个很好的教程
假设您指的是"windows应用程序"的MDI Winform。步骤如下:
- 创建一个新的子窗体
- 添加"WPF互操作性"元素
- 将您的WPF页面添加到WPF互操作元素
这些步骤只适用于。net Framework 3.0或更高版本,其中支持WPF。
您需要在MDI应用程序和您想要托管的WPF组件之间添加一个互操作层。这是不平凡的。
1)确定托管代码和本机代码之间的边界在哪里。确保你清楚地定义、描绘和尊重这个边界,否则你会流下痛苦的眼泪。这将需要在任何实际场景中使用c++/CLI。
我建议创建一个c++/CLI ref类,叫做"Launcher",作为一个跳板。它公开了本机应用程序可以使用的本机API。本机应用程序提供指向MDI窗口的指针和任何其他所需的信息。
2)使用MDI子指针和WPF组件上的HwndSource将WPF放入本机窗口。
3)通过HwndSource中的MessageHook提供从MDI-land到WPF-land的窗口消息的适当手动转发。请注意,您将手动处理从WM_WINDOWPOSCHANGED到ID_HELP的所有内容。
祝你好运!
您可以使用ElementHost将wpf控件添加到windows窗体中。将ElementHost控件添加到windows窗体,并将wpf控件设置为ElementHost子属性。
你可以在这里找到更多的细节
MSDN
ElementHost