У меня есть TabControl со списком TabItems внутри, и я хочу использовать разные шаблоны относительно источника. Допустим, 2 элемента TabItem будут привязаны к объекту, а 2 элемента TabItes могут быть привязаны к ObservableCollection.
Для этого я сделал следующее:
Я создал эти ресурсы:
<DataTemplate x:Key="TemplateType1" >
<StackPanel>
<Grid Background="{StaticResource WindowBackgroundColor}">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="auto"/>
<ColumnDefinition Width="auto"/>
</Grid.ColumnDefinitions>
<Grid Margin="10,10,20,10">
<Grid.RowDefinitions>
<RowDefinition Height="40"/>
<RowDefinition Height="auto"/>
<RowDefinition Height="auto"/>
</Grid.RowDefinitions>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<RadioButton Visibility="{Binding BottomChoice, Converter={StaticResource BoolToVisConverter}}"
Content="True option"
GroupName="radioGroup1"
IsChecked="{Binding Bottom,
Converter={StaticResource InverseBoolRadioConverter}}" />
<RadioButton Grid.Row="1" Visibility="{Binding BottomChoice, Converter={StaticResource BoolToVisConverter}}"
Content="False option"
GroupName="radioGroup1"
IsChecked="{Binding Bottom}" />
</Grid>
<Button Grid.Row="1" Width="200">
<Image Source="..\img\image_about.png"/>
</Button>
<Grid Grid.Row="2">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="60"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="60"/>
</Grid.ColumnDefinitions>
<Button Content="{x:Static p:Resources.Delete}" Click="DeleteMacro_Click" Margin="3" >
<Button.Style>
<Style TargetType="Button" BasedOn="{StaticResource {x:Type Button}}">
<Style.Triggers>
<DataTrigger Binding="{Binding Name, Mode=OneWay}" Value="">
<Setter Property="Button.IsEnabled" Value="False" />
</DataTrigger>
</Style.Triggers>
</Style>
</Button.Style>
</Button>
<Button Content="{x:Static p:Resources.Change}" Grid.Column="2" Click="EditMacroLeft_Click" Margin="3">
<Button.Style>
<Style TargetType="Button" BasedOn="{StaticResource {x:Type Button}}">
<Style.Triggers>
<DataTrigger Binding="{Binding Name, Mode=OneWay}" Value="">
<Setter Property="Button.Content" Value="{x:Static p:Resources.Add}" />
</DataTrigger>
</Style.Triggers>
</Style>
</Button.Style>
</Button>
</Grid>
</Grid>
<Grid Margin="20,10,10,10" Grid.Column="1">
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
</Grid>
</Grid>
</StackPanel>
</DataTemplate>
Затем мой TabItem выглядит так:
<TabItem Header="{x:Static p:Resources.Type1_Right}" Style="{StaticResource VerticalTabItem}">
<TabItem.ContentTemplate>
<DataTemplate>
<Grid>
<ContentPresenter ContentSource="{Binding MacroRight}" ContentTemplate="{StaticResource TemplateType1}"/>
</Grid>
</DataTemplate>
</TabItem.ContentTemplate>
</TabItem>
Я пытаюсь привязать свой шаблон к MacroRight
, но привязка не работает.
Также видно на этом ссылка , что существует возможность DataTemplateSelector
, но я не вижу конкретных примеров того, как ее использовать?