• Почему не получается задать ItemTemplate?

    @eqwik
    Мне кажется, что проблема в том, что вы не совсем хорошо понимаете разницу между TabControl.ItemTemplate и TabItem.HeaderTemplate.
    Судя по шаблону, вы пытаетесь добавить кнопку для закрытия таба в шапку хедера.
    Если это так, то для этой цели следует использовать следующий код:
    <Grid>
            <Grid.Resources>
                <DataTemplate x:Key="ClosableTabItemHeaderTemplate">
                    <DataTemplate.Resources>
                        <BooleanToVisibilityConverter x:Key="B2V"/>
                    </DataTemplate.Resources>
                    <Grid Background="Transparent" HorizontalAlignment="Stretch" MinWidth="100" ToolTip="{Binding}">
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition/>
                            <ColumnDefinition/>
                        </Grid.ColumnDefinitions>
    
                        <ContentPresenter Content="{Binding}" Grid.Column="0" HorizontalAlignment="Center"/>
                        <Button Name="CLOSE"
                Command="{Binding Path=CloseCommand}" 
                Width="15" 
                Height="15" 
                Grid.Column="1" 
                Template="{StaticResource CloseButtonTemplate}"
                Visibility="{Binding IsSelected, RelativeSource={RelativeSource FindAncestor, AncestorType=TabItem},
                Converter={StaticResource B2V}}"/>
                    </Grid>
                    <DataTemplate.Triggers>
                        <Trigger Property="IsMouseOver" Value="True">
                            <Setter TargetName="CLOSE" Property="Visibility" Value="Visible"/>
                        </Trigger>
                    </DataTemplate.Triggers>
                </DataTemplate>
    
                <Style TargetType="TabItem">
                    <Setter Property="HeaderTemplate" Value="{StaticResource ClosableTabItemHeaderTemplate}" />                
                </Style>
                
            </Grid.Resources>
    
            <TabControl>
                <TabControl.Items>
                    <TabItem Header="This is test tab item with longer name." Width="100"/>
                    <TabItem Header="Short name" Width="100"/>
                </TabControl.Items>
            </TabControl>
        </Grid>
    Ответ написан
    Комментировать