TabItem - как изменить шаблон и оставить стиль по умолчанию? - PullRequest
2 голосов
/ 20 марта 2012

У меня есть следующий код:

<Window x:Class="kkk.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
    <Window.Resources>
        <Style x:Key="tabitemstyle" TargetType="{x:Type TabItem}" BasedOn="{StaticResource {x:Type TabItem}}">
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type TabItem}">
                        <Grid>
                            <Border x:Name="Bd" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}">
                                <ContentPresenter x:Name="ContentSite" ContentSource="Header"></ContentPresenter>
                            </Border>
                        </Grid>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    </Window.Resources>
    <Grid>

        <TabControl>
            <TabItem Header="tab1" Style="{StaticResource tabitemstyle}"></TabItem>
            <TabItem Header="tab1" Style="{StaticResource tabitemstyle}"></TabItem>
        </TabControl>

    </Grid>
</Window>

Я хочу сохранить стиль TabItem по умолчанию - я имею в виду padding / margins / BorderBrush / BorderThickness и так далее ... Вот почему я написал BasedOn="...".Но это не работает - я думал, что он будет отображаться так же, как TabItem без какого-либо пользовательского стиля, но это не так - он просто отображает некоторый текст (ContentPresenter).Стиль не получает значения свойств по умолчанию ... Как я могу это сделать?И мне нужно ControlTemplate в моем стиле ...

1 Ответ

2 голосов
/ 20 марта 2012

Вы перезаписываете TabItem.Template, что говорит WPF, как рисовать объект

Если вы хотите создать шаблон на основе значения по умолчанию TabItem.Template, вы можете получить шаблон по умолчанию из MSDN и изменить его на любое другое.

...