【发布时间】:2011-07-28 18:27:51
【问题描述】:
我是 wpf 应用程序的新手.. 我正在开发窗口应用程序。它有很多模块。它的一个模块在 wpf 中,它与项目分开。所以我想将 wpf 应用程序集成到窗口应用程序项目中。
【问题讨论】:
-
嗯? WPF 应用程序已经是 Windows 应用程序。
-
wpf 表单在 xaml 中。我如何在 mdi 表单中打开它。请告诉我语法。谢谢提前
我是 wpf 应用程序的新手.. 我正在开发窗口应用程序。它有很多模块。它的一个模块在 wpf 中,它与项目分开。所以我想将 wpf 应用程序集成到窗口应用程序项目中。
【问题讨论】:
您的问题不清楚。但是,如果您尝试在 WinForms 应用程序内托管 WPF 对象,那么是的,这是可能的。
一个很好的教程可以找到here。
【讨论】:
假设您的意思是“Windows 应用程序”的 MDI Winform。步骤如下:
这些步骤仅适用于支持 WPF 的 .NET Framework 3.0 或更高版本。
【讨论】:
您需要在 MDI 应用程序和您要托管的 WPF 组件之间添加一个互操作层。这是不平凡的。
1) 确定托管代码和本机代码之间的边界在哪里。确保你清楚地定义、划定和尊重这个边界,否则你会痛哭流涕。这将需要在任何实际场景中使用 C++/CLI。
我建议创建一个名为“Launcher”之类的 C++/CLI 引用类来充当跳板。它公开了您的本机应用程序可以使用的本机 API。本机应用程序提供指向 MDI 窗口的指针和任何其他需要的信息。
2) 在 WPF 组件上使用 MDI 子指针和 HwndSource 将 WPF 拖放到本机窗口中。
3) 通过 HwndSource 中的 MessageHook 提供适当的手动将窗口消息从 MDI-land 转发到 WPF-land。请注意,您将手动处理从 WM_WINDOWPOSCHANGED 到 ID_HELP 的所有内容。
祝你好运!
【讨论】:
您可以使用 ElementHost 将 wpf 控件添加到 Windows 窗体。将 ElementHost 控件添加到 Windows 窗体并将您的 wpf 控件设置为 ElementHost Child 属性。
您可以在此处找到更多详细信息
MSDN
【讨论】: