我有一个catel:带有自定义模板的TabControl,我在其中使用ContentPresenter来呈现内容。但它永远不会出现。
TabControl被绑定到viewModels的ObservableCollection(继承自定义基础)。
我不知道我在这个XAML中做错了什么,但确实有一些东西;或者至少如果没有,我知道我必须查看我的代码或其他内容。
<catel:TabControl ItemsSource="{Binding ChildViewModels}" SelectedItem="{Binding SelectedChildViewModel, Mode=TwoWay}">
<TabControl.Template>
<ControlTemplate TargetType="{x:Type TabControl}">
<Grid HorizontalAlignment="Stretch">
<TabPanel IsItemsHost="True"/>
<ContentPresenter Content="{Binding SelectedChildViewModel, Converter={catel:ViewModelToViewConverter}}"/>
</Grid>
</ControlTemplate>
</TabControl.Template>
</catel:TabControl>
答案 0 :(得分:1)
我建议在TabControl上使用 LazyLoading 模式。在这种情况下,您只会在真正需要时实例化视图。
除非您真的需要动态标签,否则我建议您只在标签控件中嵌入视图和用户控件:
<TabItem Header="Item 2">
<views:MyView2 />
</TabItem>
<TabItem Header="Item 3">
<views:MyView3 />
</TabItem>
<TabItem Header="Item 4">
<views:MyView4 />
</TabItem>
请注意,为了创建行为(LazyLoading,EagerLoader等),Catel实现了TabControl的自定义版本,可能会干扰您的ContentPresenter。