我有一个相当大的棱镜应用程序,我正在尝试应用新功能。该功能是串行端口参数选择。
当viewmodel的IsActive
属性设置为true
时,我想刷新串口名称列表。这在样本中很愉快,但现实是......不同的。
我正在修改的视图包含在ItemsControl
(标记为"SettingsRegion"
)中,该"PageRegion"
包含在父区域(标记为SyncActiveAwareAttribute
)中。设置区域包含其他模块的设置视图。
我想使用regionmanager.Regions["blahblah"].Add(....
,但它需要范围区域。
我是否需要在此处使用视图注入(regionManager.RegisterWithRegion(...
),还是可以使用视图发现(IRegionManager
)使其工作?
如果我必须使用注射......
鉴于其他模块需要引用作用域{{1}}实例才能注入其视图:
答案 0 :(得分:3)
要创建范围区域,您需要使用View注入。相关信息可在以下 MSDN Prism第7章链接中找到:
通过在 Region.Add上将 createScopeRegionManager 重载参数设置为 true ,返回范围区域管理器( ) 方法。您可以在通常添加的相同位置执行此操作,或将视图注册到区域,例如相应模块的 initialize() < / strong>方法:
IRegionManager scopedRegionManager = scopedRegion.Add(view, null, createScopeRegionManager);
然后,将 scopedRegionManager 共享给其他模块的一种可能方法是使用 scopedRegionManager 发布() 一个事件作为参数。但是,您应该注意Module依赖项和Modules实例化顺序。 另一种方法是将 scopedRegionManager 存储到例如 Dictionary 中。您可以在以下 CodePlex 主题中找到更多相关信息:
在其他视图注册中使用视图范围注册不会出现 Scoped Regions ,这不应该是任何问题。
我希望这能帮到你,
问候。