ViewModelToViewConverter不工作?甚至不叫?

时间:2015-06-01 12:53:15

标签: wpf xaml mvvm converter catel

我有一个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>

1 个答案:

答案 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。