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

时间:2015-10-12 15:07:16

标签: c# wpf prism

我有一个场景,我在一个窗口中注册了多个视图,一次有一个视图处于活动状态。

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

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

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

我遇到的问题是,如果视图不是当前活动的视图,那么由于Raised事件变为null或者"此视觉不是连接到PresentationSource"扔了。

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

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

谢谢!

1 个答案:

答案 0 :(得分:3)

我想说这是其中之一,其中InteractionRequest不是正确的工具。它隐含地假设它是当前呈现的视图的交互。对于您正在描述的内容,我通常有一个应用程序级别的DialogService,它可以向用户显示某种对话框,无论当前屏幕上的视图是什么。 ViewModels或其他服务可以为其注入接口引用,并随时显示对话框。

该服务的实现可以在shell级别使用InteractionRequest本身,但随后您可能会遇到放置问题,具体取决于您希望该对话框呈现的方式。因此,我经常只将新服务作为对话框的框架,并将其与通过界面传递的内容一起呈现。

希望有所帮助。