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 作为对话框的框架,并使用通过界面传递的内容来呈现它。
希望对您有所帮助。
我有一个场景,我在 window 中注册了多个视图,同时一个视图处于活动状态。
我在 window 关闭时使用 CompositeCommand 以验证是否可以关闭,每个视图都使用该复合命令注册一个命令。
复合命令按预期工作,但我的问题是某些视图需要提出交互请求以允许用户确认他们希望 window 关闭而不修复这些视图的验证问题.
为此,某些视图具有交互请求,它们会在命令触发时触发这些请求,然后需要用户确认。
我遇到的问题是,如果视图不是当前活动的视图,则 interactionrequest 无法触发,因为 Raised 事件变为 null 或抛出异常 "This Visual is not connected to a PresentationSource"。
我已尝试激活想要提出交互请求的视图,但由于复合命令正在同步执行,因此在需要触发交互请求之前无法激活视图。
我要实施这个错误吗?或者有没有办法让交互请求不抛出?
谢谢!
我想说这是 InteractionRequest 不是完成这项工作的正确工具的地方之一。它有一个隐含的假设,即它是针对当前呈现的视图 的交互 。对于您所描述的事情,我通常有一个应用程序级别的 DialogService,它可以向用户呈现某种对话框,而不管当前屏幕上显示的是什么视图。 ViewModel 或其他服务可以向其注入接口引用,并在需要时随时显示对话框。
该服务的实现可以在 shell 级别使用 InteractionRequest 本身,但随后您可以 运行 根据您希望对话框的显示方式解决放置问题。因此,我通常只会让该服务自己新建 window 作为对话框的框架,并使用通过界面传递的内容来呈现它。
希望对您有所帮助。