将Prism 6.2.0更新为8.0后WPF InteractionRequest无法正常工作

问题描述

我已将使用Prism 6.2.0的WPF项目构建更新为Prism 8.0。我正在使用.NET Framework 4.7。

我在应用程序的很多地方都使用InteractionRequest,以便打开一个弹出窗口来收集用户信息。更新项目后,出现此错误

找不到类型或名称空间'InteractionRequest '。您是否缺少程序集引用或using指令?

添加了使用Prism.Interactivity

有人知道如何解决此问题吗? InteractionRequest在Prism 8.0中是否已弃用?如果是的话,我该如何替代该功能

解决方法

Prism 7.2.0.1367中的InteractionRequestPopupWindowAction API被新的对话框服务所替代。以下GitHub问题涵盖了这样做的原因:

引用release notes的Brian Lagunas:

当前,使用Prism显示任何类型的对话框的唯一方法是将PopupWindowAction与System.Windows.Interactivity结合使用。 [...]它过于复杂,冗长,难以实施且非常有限。 [...]

相反,我创建了一个新的IDialogService API,它将完全替代PopupWindowAction。该服务将使开发人员能够显示他们想要模态对话框或非模态对话框,并完全控制其对话框逻辑。

您可以参考dialog service documentation来学习如何使用它并进行迁移。另请注意,Prism 8添加了对多个对话框窗口主机的支持,Prism 7.x不支持。