我有一个TabControl,其中只有一个具体的选项卡,并绑定到一个VM集合,使用不同的用户控件。为此,我使用CompositeCollection和在控件资源中定义的DataTemplates,根据VM类型选择正确的用户控件(作为ContentTemplate)。
我还设置了ItemTemplate以使用绑定定义选项卡项的名称,但它没有在资源中定义,因为我猜想会与“ContentTemplate”冲突。
它能正常工作,但我看到以下错误跟踪:
System.Windows.Data Error: 26 : ItemTemplate and ItemTemplateSelector are ignored for items already of the ItemsControl's container type; Type='TabItem'
看起来ContentTemplate和ItemTemplate之间存在一些冲突,但我不知道如何修复它?
代码如下:
我还设置了ItemTemplate以使用绑定定义选项卡项的名称,但它没有在资源中定义,因为我猜想会与“ContentTemplate”冲突。
它能正常工作,但我看到以下错误跟踪:
System.Windows.Data Error: 26 : ItemTemplate and ItemTemplateSelector are ignored for items already of the ItemsControl's container type; Type='TabItem'
看起来ContentTemplate和ItemTemplate之间存在一些冲突,但我不知道如何修复它?
代码如下:
<TabControl HorizontalAlignment="Left" Height="300" Width="500">
<TabControl.Resources>
<CollectionViewSource x:Key="personCollection" Source="{Binding Persons}" />
<DataTemplate DataType="{x:Type viewModel:Main}">
<local:MainView />
</DataTemplate>
<DataTemplate DataType="{x:Type viewModel:Person}">
<local:PersonView />
</DataTemplate>
</TabControl.Resources>
<TabControl.ItemsSource>
<CompositeCollection>
<TabItem Header="General" Content="{Binding }"/>
<CollectionContainer Collection="{Binding Source={StaticResource personCollection}}" />
</CompositeCollection>
</TabControl.ItemsSource>
<TabControl.ItemTemplate>
<DataTemplate DataType="viewModel:Person">
<TextBlock Text="{Binding FirstName}" />
</DataTemplate>
</TabControl.ItemTemplate>
</TabControl>