WPF Tabcontrol DataTemplate和子用户控件初始化

时间:2019-03-06 13:20:13

标签: wpf user-controls datatemplate

我有一个带有TabControl的视图,每个选项卡的内容都定义为TabControl.Resources中的Resource。在此内容中,我有一个用户控件,该控件基本上包含一个数据网格。

<TabControl ItemsSource="{Binding MyTabs}"
            SelectionChanged="TabSelected">
    <TabControl.Resources>
        <DataTemplate DataType="{x:Type uc:Tab}">
            <uc:MyUserControlWithDatagrid />
        </DataTemplate>
    </TabControl.Resources>
</TabControl>

令我惊讶的是,我注意到即使我有多个选项卡项目,我也只能在MyUserControlWithDatagrid的构造函数中输入一次。我猜它在所有选项卡项目之间“共享”吗?

如果这是正确的,我该如何做,以便为每个选项卡项目创建一个usercontrol实例?

1 个答案:

答案 0 :(得分:0)

您可能想阅读this article有关选项卡虚拟化的信息。

您可以从here下载代码示例。

提出的解决方案使您可以定义自定义模板:

<TabControl ikriv:TabContent.IsCached="True">
    <ikriv:TabContent.Template>
        <DataTemplate>
            <!-- custom content template goes here -->
        </DataTemplate>
    </ikriv:TabContent.Template>
</TabControl>