wpf-controls - 在区域列表中,选项卡控件内的WPF Prism区域不是

  显示原文与译文双语对照的内容
57 1

我有一个附加到它的区域的选项卡控件,并且我在选项卡控件内容中还有一个内容控件。

我所拥有的问题是- 如果我调用 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);
 }
 }
 }

你可以看到,它是位 janky,并不完全工作。我在做错误的事情?

感谢你的帮助!

时间:原作者:0个回答

125 3

在玩了很多游戏之后,我终于找到了答案 !

因为区域内部是一个区域,所以 register的标准行为不会将它从区域管理器中取出。

在这里使用代码提供 ,它帮助我解决这个问题,并进行正常的: )

干杯。

原作者:
...