Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Prism5和x2B;统一,如何在shell和所有模块加载后弹出_C#_Wpf_Unity Container_Prism - Fatal编程技术网

C# Prism5和x2B;统一,如何在shell和所有模块加载后弹出

C# Prism5和x2B;统一,如何在shell和所有模块加载后弹出,c#,wpf,unity-container,prism,C#,Wpf,Unity Container,Prism,我有一个问题:注入服务的弹出窗口应该在shell加载后引发,它类似于登录表单,所以我在shell上的“加载”事件中引发它 <i:EventTrigger EventName="Loaded"> <interactivity:InvokeCommandAction Command="{Binding OnShellLoadedCommand}"/> </i:EventTrigger> 它发生在Bootstrapper中的CreateShell()之

我有一个问题:注入服务的弹出窗口应该在shell加载后引发,它类似于登录表单,所以我在shell上的“加载”事件中引发它

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

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

 protected override DependencyObject CreateShell()
 {
     return Container.Resolve<Shell>();
 }
protected override DependencyObject CreateShell()受保护的覆盖依赖对象
{
返回Container.Resolve();
}

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

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

您所说的“共享服务”是什么意思?在CreateShell之前调用ConfigureContainer,因此在加载外壳程序时,Prism的所有服务都应准备就绪。此外,您确定没有从“OnShellLoadedCommand”回调引发异常吗?您尝试使用的服务是否存在于与外壳程序不同的模块中,您试图在模块加载之前调用这些服务吗?@BrianLagunas的“共享服务”我指的是定制服务,我指的是类似于您在pluralsight“PRISM简介”课程中“通信”主题的服务。是的,服务存在于与shell不同的模块中,我试图在IModule.Initialize()之前调用这些服务。如果我是对的,顺序是1)配置容器2)CreateShell 3)在OnShellLoadedCommand中引发的Shell加载事件4)PopupRequest.Raise调用5)ServiceLocator.Current.GetInstance 6)在我尝试注入sharedService时发生异常,但如果我尝试在模块上注入IEventAggregator(例如7)Initialize(),则可以。