gpt4 book ai didi

c# - 实例化 PRISM shell 的多个实例

转载 作者:太空宇宙 更新时间:2023-11-03 21:17:33 24 4
gpt4 key购买 nike

我正在尝试设置一个允许打开同一窗口(外壳)的多个实例的应用程序。我有一个主 shell(由 Bootstrapper 设置),我从中打开第二个 shell 的新实例。第二个外壳包含多个区域。

现在出现了一个问题,因为给定区域在每个应用程序(或 RegionManager)中只能出现一次,所以我尝试为每个 shell 提供自己的 RegionManager。这似乎工作正常,但我还使用 Unity 将 RegionManager 注入(inject)我的 ViewModels/Controllers,这意味着我总是获得主 shell 的实例,而不是绑定(bind)到 ViewModel 所属 shell 的实例。

是否有可能以某种方式使这项工作成功?对于我的用例,这甚至是正确的方法吗?

最佳答案

有几种方法可以处理这个问题。可能最简单的是使用 Scoped RegionManager: https://msdn.microsoft.com/en-us/library/ff921162.aspx http://southworks.com/blog/2011/11/30/prism-region-navigation-and-scoped-regions/

另一个是您可以将 IRegionManager 的命名实例(每个 shell 窗口一个)注册到容器中,并按名称解析这些实例。只有当依赖于那些命名实例的 ViewModels/Services 只能在一个或另一个窗口中创建时,这才真正有效。

另一种方法是为每个窗口创建一个子容器,并在每个子容器中注册一个单独的 RegionManager 实例,这样在窗口内解析实例的尝试就会违反该窗口的区域管理器。

关于c# - 实例化 PRISM shell 的多个实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33010756/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com