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

时间:2015-10-26 15:42:18

标签: c# wpf unity-container prism

我有问题:注入服务的弹出窗口应该在shell加载之后提升,它就像登录表单一样,所以我在shell上的“Loaded”事件中引发它。

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

它发生在Bootstrapper

中的CreateShell()之后
run

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

1 个答案:

答案 0 :(得分:0)

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