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

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

这就是我的问题所在。这是如何运作的?最好的我可以告诉,WPF UserControl甚至没有DialogResult属性(这是有意义的,因为它没有ShowDialog()方法) - 它看起来像我需要一个WPF窗口控件 - 我不我认为在这种情况下我可以使用它。

在这里挣扎着基本的流程和设置。有人能发光吗?

这甚至可能吗?

有帮助吗?

解决方案

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

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

其他提示

如果你希望你的互操作应用程序像WinForms应用程序一样工作 ,那么你描述的方法运行正常 - 在我的互操作案例中我几乎是一样的。

WPF支持MessageBoxes(虽然版本与WinForms略有不同),你可以使用WPF Windows将其放在一起(通过添加类似于DialogResult的东西来扩展它)。但是,提供的WPF控件表明他们正在尝试更改UX交互以最小化对话框,尤其是模式对话框。

为了让您的生活更轻松,我会创建一个WinForms Form / ElementHost子类,专门用于处理w /托管WPF内容,并根据您对“使用”内容的干净程度。声明,包装您自己的类似DialogResult的枚举,因此您不必包含System.Windows.Forms命名空间,这可能会使您的WPF代码隐藏更加麻烦。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top