CompositeCommand 触发时引发 InteractionRequests (WPF/PRISM)

Raising InteractionRequests when CompositeCommand fired (WPF/PRISM)

我有一个场景,我在 window 中注册了多个视图,同时一个视图处于活动状态。

我在 window 关闭时使用 CompositeCommand 以验证是否可以关闭,每个视图都使用该复合命令注册一个命令。

复合命令按预期工作,但我的问题是某些视图需要提出交互请求以允许用户确认他们希望 window 关闭而不修复这些视图的验证问题.

为此,某些视图具有交互请求,它们会在命令触发时触发这些请求,然后需要用户确认。

我遇到的问题是,如果视图不是当前活动的视图,则 interactionrequest 无法触发,因为 Raised 事件变为 null 或抛出异常 "This Visual is not connected to a PresentationSource"。

我已尝试激活想要提出交互请求的视图,但由于复合命令正在同步执行,因此在需要触发交互请求之前无法激活视图。

我要实施这个错误吗?或者有没有办法让交互请求不抛出?

谢谢!

我想说这是 InteractionRequest 不是完成这项工作的正确工具的地方之一。它有一个隐含的假设,即它是针对当前呈现的视图 的交互 。对于您所描述的事情,我通常有一个应用程序级别的 DialogService,它可以向用户呈现某种对话框,而不管当前屏幕上显示的是什么视图。 ViewModel 或其他服务可以向其注入接口引用,并在需要时随时显示对话框。

该服务的实现可以在 shell 级别使用 InteractionRequest 本身,但随后您可以 运行 根据您希望对话框的显示方式解决放置问题。因此,我通常只会让该服务自己新建 window 作为对话框的框架,并使用通过界面传递的内容来呈现它。

希望对您有所帮助。