我想构建一个 WPF/Prism 应用程序,其中每个顶级窗口都在自己的 UI 线程中。这是相当直接的事情。我使用 Unity 作为我的 DI 容器,并希望创建一个容器层次结构。在最简单的情况下,根容器位于应用程序级别,每个窗口都有一个子容器。这是可取的,因为每个窗口都可以有自己的共享对象,其范围由子容器限定。

我希望每个窗口都有自己的 Prism 区域管理器,这样我就不会遇到任何跨线程问题,因为每个窗口都有自己的 UI 线程。我看到 Region 和 RegionManager 使用 ServiceLocator.Current 单例。这是一个问题,因为我希望 RegionManager 使用它所限定的容器,而静态单例是不可能的。你们中有人遇到过这个问题吗?你将如何解决它?

谢谢!

最佳答案

您可以将 Bootstrapper 作为子容器并在那里注册您的类型。并将您的 ServiceLocater 置于应用程序级别,它将调用您的 bootstrap 。

更多信息; http://msdn.microsoft.com/en-us/library/ff649077.aspx

关于wpf - Prism、ServiceLocator 和 Unity 容器层次结构和多窗口 WPF 应用程序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5519304/

10-11 04:18
查看更多