Я использую MVVM.У меня есть вкладка управления.У меня будет коллекция предметов.Я хочу отобразить каждый из этого элемента в коллекции как элемент вкладки.Представление в каждом элементе вкладки отличается и может иметь свою собственную модель представления.Как мне этого добиться?Например, у меня есть 3 предмета в коллекции.Шаблон элемента Tab содержит ItemControl.Теперь я хотел бы создать 3 вкладки, и элементы управления ItemControls внутри каждой вкладки могут отображать различные представления.
Один из способов, который я мог бы сделать, - это создать по одному представлению и модели представления для каждого элемента.Теперь в зависимости от некоторых условий представление будет отображать различные элементы интерфейса и вести себя по-разному.Но я боюсь, что это сделает представление довольно сложным в течение определенного периода времени.
Редактировать: приведенное ниже решение Гоблина работает нормально, но у меня есть проблема, когда пользовательский стиль применяется к TabControl.
<Style x:Key="TabControlStyle" TargetType="{x:Type TabControl}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="TabControl">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition/> <ColumnDefinition />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" Name="RowDefinition0" />
<RowDefinition Height="*" Name="RowDefinition1" />
</Grid.RowDefinitions>
<TabPanel Grid.Column="0" Grid.Row="0" />
<Border Grid.Column="0" Grid.Row="1">
<ContentPresenter Content="{TemplateBinding TabControl.SelectedContent}" ContentTemplate="{TemplateBinding TabControl.SelectedContentTemplate}" ContentStringFormat="{TemplateBinding TabControl.SelectedContentStringFormat}" ContentSource="SelectedContent" Name="PART_SelectedContentHost" Margin="{TemplateBinding Control.Padding}" SnapsToDevicePixels="{TemplateBinding UIElement.SnapsToDevicePixels}" />
</Border>
</Grid>
<ControlTemplate.Triggers>
РЕДАКТИРОВАТЬ: Это было решено путем добавления ContentTemplateSelector к ContentPresenter в вышеуказанном стиле TabControl