覆盖样式的特定属性

时间:2015-11-11 11:28:06

标签: c# wpf xaml

我正在为TabControl创建一个新样式,包括项目的新ItemContainerStyle。新样式工作正常,但我需要在使用样式时向ItemContainerStyle添加功能。详细说明,这是Header属性

  <TabControl x:Name="myTabControl" SelectionChanged="myTabControl_SelectionChanged">
            <TabControl.ItemContainerStyle>
                <Style TargetType="TabItem">
                    <Setter Property="Header" Value="{Binding Title}"></Setter>
                </Style>
            </TabControl.ItemContainerStyle>
        </TabControl>

哪个有效。但它完全覆盖了这种风格。 BasedOn属性会有所帮助,但我无法访问ItemContainerStyle的键,因为它嵌入了TabControls的样式中。如何在不完全覆盖样式的情况下简单地更新样式的属性?

由于

2 个答案:

答案 0 :(得分:1)

与CSS相比,WPF中的样式有点不同。在Wpf中,它们完全脱离继承,this is the basic document on how styles work。因此,如果没有为您提供密钥,我认为您在使用BasedOn继承时运气不佳。

但是,Microsoft确实在Visual Studio Blend中提供了一个有用的实用程序。在对象和时间线窗口中,您右键单击然后选择“编辑样式”,这将为您完成所有繁重的工作。如果你要对样式进行很多小改动,我建议你复制一下,给它一个Key,然后使用BasedOn属性进行你想要的小改动。

我希望这会有所帮助。

答案 1 :(得分:0)

您可以将样式基于隐式应用的默认样式:

<Style TargetType="TabItem" BasedOn="{StaticResource {x:Type TabItem}}">