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 时可以使用它。
我有问题:在 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 时可以使用它。