我有一个带TabControl的视图,每个选项卡的内容在TabControl.Resources中定义为一个资源。在这个内容中,我有一个用户控件,它基本上包含一个datagrid。
<TabControl ItemsSource="{Binding MyTabs}"
SelectionChanged="TabSelected">
<TabControl.Resources>
<DataTemplate DataType="{x:Type uc:Tab}">
<uc:MyUserControlWithDatagrid />
</DataTemplate>
</TabControl.Resources>
</TabControl>
令我惊讶的是,我注意到即使我有多个标签项,我也只在MyUserControlWithDatagrid的构造函数中输入一次。我猜它是在所有标签项之间“共享”的?
如果这是正确的,我该如何创建它以便为每个标签项创建一个usercontrol实例?
您可能想阅读有关标签虚拟化的this article。
您可以从here下载代码示例。
建议的解决方案使您可以定义自定义模板:
<TabControl ikriv:TabContent.IsCached="True">
<ikriv:TabContent.Template>
<DataTemplate>
<!-- custom content template goes here -->
</DataTemplate>
</ikriv:TabContent.Template>
</TabControl>