【问题标题】:Raising InteractionRequests when CompositeCommand fired (WPF/PRISM)CompositeCommand 触发时引发 InteractionRequests (WPF/PRISM)
【发布时间】:2015-10-12 15:07:15
【问题描述】:

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

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

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

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

我遇到的问题是,如果视图不是当前活动视图,则交互请求无法触发,因为 Raised 事件变为 null 或抛出“此视觉对象未连接到 PresentationSource”异常.

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

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

谢谢!

【问题讨论】:

    标签: c# wpf prism


    【解决方案1】:

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

    该服务的实现可以在 shell 级别使用 InteractionRequest 本身,但是您可能会遇到放置问题,具体取决于您希望该对话框如何呈现。所以我通常只是让该服务新建自己的窗口作为对话框的框架,并将通过接口传递的内容呈现给它。

    希望对您有所帮助。

    【讨论】:

    • 这正是我需要做的。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-11
    • 2023-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多