@DarkByte2015

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

Я пишу:
<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>

<TabControl ItemTemplate="{StaticResource ClosableTabItemHeaderTemplate}">
	<TabControl.Items>
		<TabItem Header="This is test tab item with longer name." Width="100"/>
		<TabItem Header="Short name" Width="100"/>
	</TabControl.Items>
</TabControl>

Но шаблон не применяется! В чем проблема? :(
  • Вопрос задан
  • 239 просмотров
Пригласить эксперта
Ответы на вопрос 1
@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>
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы