【发布时间】:2012-12-05 22:00:56
【问题描述】:
我需要根据绑定的 RegionName 加载区域。有点像
<ContentControl cal:RegionManager.RegionName="{Binding CustomRegionName}"
Grid.Column="2"/>
所有区域均已正确注册。如果我更改 CustomRegionName 的值,则该区域永远不会改变。我该怎么做?
【问题讨论】:
我需要根据绑定的 RegionName 加载区域。有点像
<ContentControl cal:RegionManager.RegionName="{Binding CustomRegionName}"
Grid.Column="2"/>
所有区域均已正确注册。如果我更改 CustomRegionName 的值,则该区域永远不会改变。我该怎么做?
【问题讨论】:
此行为是因为该区域已加载到可视化树中。您能否稍微更改您的应用程序,以便您保留区域名称但将多个视图加载到该区域中。这样您就可以选择区域中哪个视图处于活动状态,并使用 IRegionViewManager 和 IRegion 接口动态更改内容控件的显示 即
IRegion region = regionManager.Regions["RegionName"];
object view = container.Resolve<SomeView>();
object view2 = container.Resolve<SomeView2>();
region.Add(view);
region.Add(view2);
然后您想在其他地方显示特定视图 注入IRegionManager,然后调用
region.Activate(whichever view);
【讨论】: