我正在使用带有 Unity 的 Prism for WPF - 我们的应用程序创建多个子视图(当用户“打开”一个项目时),这些子视图又包含其他区域,其视图是使用视图发现创建的,即
// 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,因为它看起来过于复杂),但是我们也希望每个子视图都有自己的子统一容器这样我们就可以注入特定于项目的依赖项。
这就是我们创建子视图的方式
var childContainer = container.CreateChildContainer();
childContainer.RegisterInstance(...);
var childView = childContainer.Resolve<ChildItemView>();
region.Add(childView, viewName, createRegionManagerScope: true);
尽管子统一容器用于正确解析 的依赖关系ChildItemView
,但在创建嵌套视图时(ItemNavigationView
并且ItemContentView
)使用父容器代替,因此某些依赖关系无法解析。
如何将我的子统一容器与范围区域相关联,以便在解决该区域内创建的视图的依赖关系时使用正确的统一容器?