3

我在从 TabControl 的 ItemContainerStyle 中的默认样式继承时遇到问题。

目的是继承主题风格,只改变一些属性。

如果我编写此 XAML 代码,则使用默认的 TabItem 样式,但不使用主题样式。你知道为什么吗?

<TabControl>

    <TabControl.Resources>
        <Style TargetType="Button" BasedOn="{StaticResource {x:Type Button}}">
            <Setter Property="Background" Value="DarkBlue"/>
        </Style>
    </TabControl.Resources>

    <TabControl.ItemContainerStyle>
        <Style TargetType="TabItem" BasedOn="{StaticResource {x:Type TabItem}}">
            <Setter Property="Background" Value="Blue"/>
            <Setter Property="Foreground" Value="Red"/>
        </Style>
    </TabControl.ItemContainerStyle>

    <TabItem Header="Tab 1"/>
    <TabItem Header="Tab 2"/>
    <TabItem Header="Tab 3"/>
    <TabItem Header="Tab 4"/>

</TabControl>

PS:对资源中的按钮做同样的事情,效果很好。为什么它没有 TabItem 样式?与 ItemContainerStyle 有什么关系?

PS2:我的主题风格(默认风格)是存储在应用资源中的。

谢谢

编辑 1

您可以在我的 dropbox 上找到示例项目: https ://dl.dropboxusercontent.com/u/61987557/InheritDefaultStyle.zip

4

2 回答 2

0

我猜 TabItemStyle 和 ItemContainerStyle 是两个不同的东西, ItemContainerStyle应用于为每个项目生成的容器元素。而您正在尝试在 ItemContainerStyle 中设置 TabItemStyle。

于 2013-05-30T12:57:48.263 回答
0

为 TabItem 的样式定义一个键:

<Style TargetType="{x:Type TabItem}" x:Key="StandardTabItemControl">
...
</Style>

然后使用这个键来继承它:

<TabControl.ItemContainerStyle>
   <Style TargetType="TabItem" BasedOn="{StaticResource StandardTabItemControl}">
         ...
   </Style>
</TabControl.ItemContainerStyle>
于 2015-04-09T10:21:10.647 回答