【问题标题】:integration of wpf into window application将 wpf 集成到窗口应用程序中
【发布时间】:2011-07-28 18:27:51
【问题描述】:

我是 wpf 应用程序的新手.. 我正在开发窗口应用程序。它有很多模块。它的一个模块在 wpf 中,它与项目分开。所以我想将 wpf 应用程序集成到窗口应用程序项目中。

【问题讨论】:

  • 嗯? WPF 应用程序已经是 Windows 应用程序。
  • wpf 表单在 xaml 中。我如何在 mdi 表单中打开它。请告诉我语法。谢谢提前

标签: c# wpf windows winforms


【解决方案1】:

您的问题不清楚。但是,如果您尝试在 WinForms 应用程序内托管 WPF 对象,那么是的,这是可能的。

一个很好的教程可以找到here

【讨论】:

    【解决方案2】:

    假设您的意思是“Windows 应用程序”的 MDI Winform。步骤如下:

    1. 创建一个新的子 Winform。
    2. 添加“WPF 互操作性”元素
    3. 将您的 WPF 页面添加到 WPF 互操作元素中

    这些步骤仅适用于支持 WPF 的 .NET Framework 3.0 或更高版本。

    【讨论】:

      【解决方案3】:

      您需要在 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 的所有内容。

      祝你好运!

      【讨论】:

      • 我只想知道 steps.bcoz 我无法在 goggle 搜索中找到它。
      【解决方案4】:

      您可以使用 ElementHost 将 wpf 控件添加到 Windows 窗体。将 ElementHost 控件添加到 Windows 窗体并将您的 wpf 控件设置为 ElementHost Child 属性。

      您可以在此处找到更多详细信息
      MSDN

      ElementHost

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-03-04
        • 2011-04-09
        • 1970-01-01
        • 1970-01-01
        • 2011-03-09
        • 2013-05-24
        • 2017-03-17
        • 1970-01-01
        相关资源
        最近更新 更多