Prism5 + Unity,如何在 shell 和所有模块加载后提升弹出窗口

Prism5 + Unity, how to raise popup after shell and all modules loaded

我有问题:在 shell 加载后应该会弹出带有注入服务的弹出窗口,它类似于登录表单,所以我在 shell 上的 "Loaded" 事件上弹出它。

<i:EventTrigger EventName="Loaded">
    <interactivity:InvokeCommandAction Command="{Binding OnShellLoadedCommand}"/>
</i:EventTrigger>

它发生在 Bootstrapper 中的 CreateShell() 之后

 protected override DependencyObject CreateShell()
 {
     return Container.Resolve<Shell>();
 }

prism 的服务没问题,但共享服务出现问题,因为模块在 CreateShell() 之后加载,我得到异常。 shell 加载后如何提升弹出窗口的好方法是什么?

您需要重新考虑如何显示登录屏幕。如果你的服务存在于一个模块中,显然你不能创建和使用它,直到它被加载并注册到容器中。所以你有几个选择。将您的登录弹出窗口移动到模块中的视图中,并将触发器放置在您在 IModule show/initialize 中使用 RegisterViewWithRegion 的视图上。然后使用该视图的加载事件。我实际上会在实际显示 shell 之前显示您的登录对话框。如果登录成功,显示Shell,如果失败可以关闭应用。无论哪种方式,您都不能使用尚未加载的服务。因此,将您的登录弹出窗口移动到包含该服务的模块,或者将您的登录服务移动到 shell 以便在加载 shell 时可以使用它。