【发布时间】:2009-03-09 12:17:03
【问题描述】:
在 Prism v2 应用程序中,我定义了两个区域,每个区域都是 tabcontrol 中的一个 tabitem:
<UniformGrid Margin="10">
<TabControl>
<TabItem Header="First" Name="MainRegion" cal:RegionManager.RegionName="MainRegion"/>
<TabItem Header="Second" Name="SecondRegion" cal:RegionManager.RegionName="SecondRegion"/>
</TabControl>
</UniformGrid>
在引导程序中加载了两个模块,每个模块都向每个 tabitems 注入一个视图:
protected override IModuleCatalog GetModuleCatalog()
{
ModuleCatalog catalog = new ModuleCatalog();
catalog.AddModule(typeof(SecondModule.SecondModule));
catalog.AddModule(typeof(HelloWorldModule.HelloWorldModule));
return catalog;
}
现在,当然,我想执行我一直在阅读的解耦魔法并取消注释其中一个模块,然后看到它的选项卡项根本没有出现。取而代之的是,还是有两个TabItem,一个是空的。这告诉我,我的应用程序仍然像以前糟糕的 WinForm 时代一样紧密耦合数据和 UI。
那么我需要在这里做什么来使这个动态化,以便 UI 根据加载的模块动态变化,即我可以在我的引导程序中加载 10 个模块/视图,并且会自动有 10 个 TabItems TabControl?
中间答案:
如果我只在 TabControl 中创建一个区域:
<TabControl Name="MainRegion" cal:RegionManager.RegionName="MainRegion"/>
然后将两个控件加载到 MainRegion:
public void Initialize()
{
regionManager.RegisterViewWithRegion("MainRegion", typeof(Views.SecondView));
}
...
public void Initialize()
{
regionManager.RegisterViewWithRegion("MainRegion", typeof(Views.HelloWorldView));
}
然后我得到一个带有两个选项卡的 TabControl,每个选项卡中都有一个视图,这就是我想要的。
但未定义 TabItem 标头。如何动态定义标头(例如,不在 XAML 中,而是在 View 类中动态定义)?
【问题讨论】:
标签: prism composite-application-gu