代码之家  ›  专栏  ›  技术社区  ›  Paul Prewett

WPF互操作和对话框

  •  0
  • Paul Prewett  · 技术社区  · 17 年前

    我有一个现有的winforms应用程序,我现在正在WPF中设计新的位。事情进展得相当顺利,我第一次需要对话。

    我想在WPF中进行对话。看起来好像我需要为实际内容做一个UserControl,然后通过一个带有elementHost的WinForms窗体托管该内容(因为UserControl没有ShowDialog()方法)。

    这就是我的问题所在。这是怎么回事?我只能说,wpf用户控件甚至没有DialogResult属性(考虑到它没有showDialog()方法,这是有意义的),在我看来,我需要一个wpf窗口控件-我认为在这种情况下我不能使用它。

    与这里的基本流程和设置作斗争。有人能发光吗?

    这是可能的吗?

    2 回复  |  直到 16 年前
        1
  •  2
  •   Cameron MacFarland    16 年前

    可以从WinForms应用程序打开WPF窗口。

    只需创建窗口并调用 ShowDialog() . CLR将加载WPF框架并打开窗口。

        2
  •  0
  •   micahtan    17 年前

    如果希望Interop应用程序工作 主要地 就像一个WinForms应用程序一样,那么您描述的方法也可以很好地工作——在我的互操作案例中,我有很多相同的东西。

    WPF支持MessageBoxes(尽管与WinForms版本稍有不同),您可以使用WPF窗口将一些内容组合在一起(通过添加类似于DialogResult的内容对其进行扩展)。然而,所提供的WPF控件表明,它们正试图更改UX交互,以最小化对话框,特别是模态对话框。

    不过,为了让您的生活更轻松,我将创建一个winforms-form/elementhost子类,专门用于处理w/hosting wpf内容,并根据您喜欢的“使用”声明的清洁程度,包装您自己的对话框结果(如枚举),这样您就不必包括system.windows.forms命名空间,它可以使wpf代码落后更多。麻烦。