我有一个附有区域的选项卡控件,并且我的选项卡控件内部还有一个内容控件,该控件具有另一个区域的内容。
我遇到的问题是 - 如果我调用 RegisterViewWithRegion 它将视图添加到该区域没有问题(第一次,如果你交换标签会出现问题)。但这不是很灵活,我正在寻找一种更好的方法来做到这一点。
当我查看 IRegionManager.Regions 内部时 - 我只能看到两个顶级区域。我看不到我的子区域TabContentRegion。有没有办法注册这个,所以我可以像往常一样添加视图并激活它们?
<TabControl TabStripPlacement="Left"
Width="Auto"
Height="Auto"
cal:RegionManager.RegionName="TabRegion"
Name="TabRegion"
SelectedItem="{Binding SelectedTab}">
<TabControl.ContentTemplate>
<DataTemplate>
<ContentControls:TransitionContentControl
cal:RegionManager.RegionName="TabContentRegion" />
</DataTemplate>
</TabControl.ContentTemplate>
</TabControl>
此代码将视图添加到 TabRegion
public void Load()
{
IConfigurationDetailsPresentationModel convDetailsView1 =
this.Container.Resolve<IConfigurationDetailsPresentationModel>();
IRegionManager manager = this.Container.Resolve<IRegionManager>();
manager.RegisterViewWithRegion("TabRegion", () => convDetailsView1);
IConversationDetailsPresentationModel conversationDetails =
this.Container.Resolve<IConversationDetailsPresentationModel>();
manager.RegisterViewWithRegion("TabRegion", () => conversationDetails);
}
然后这是我用来在 TabContentRegion 中实际显示视图的代码
public IPresentationModel SelectedTab
{
get { return _selectedTab; }
set
{
_selectedTab = value;
IRegionManager service = this.Container.Resolve<IRegionManager>();
if (service != null)
{
service.RegisterViewWithRegion(
"TabContentRegion",
() => _selectedTab.View);
}
}
}
正如你所看到的 - 它有点笨拙并且不太有效。任何想法我做错了什么?
谢谢你的帮助!