我正在使用Prism for WPF与Unity - 我们的应用程序创建多个子视图(当用户“打开”一个项目时),该视图又包含其视图使用视图发现创建的其他区域,即
// The various views used in the child are registered using
// RegisterViewWithRegion in the module that implements that view
public void Initialize()
{
regionManager.RegisterViewWithRegion("ItemNavigation", typeof(ItemNavigationView));
regionManager.RegisterViewWithRegion("ItemContent", typeof(ItemContentView));
}
由于我们创建了多个这样的子视图,每个视图必须使用自己的作用域管理器创建(我们决定不使用多个shell,因为它看起来过于复杂),但是我们也希望每个子视图都有自己的child unity container以便我们可以注入特定于项目的依赖项。
这就是我们创建子视图的方式
var childContainer = container.CreateChildContainer();
childContainer.RegisterInstance(...);
var childView = childContainer.Resolve<ChildItemView>();
region.Add(childView, viewName, createRegionManagerScope: true);
虽然使用子统一容器来正确解析ChildItemView
的依赖关系,但是当创建嵌套视图(ItemNavigationView
和ItemContentView
)时,会使用父容器,因此会使用某些依赖关系无法解决。
如何将我的子统一容器与作用域区域相关联,以便在解析在该区域内创建的视图的依赖关系时使用正确的统一容器?