我正在为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的样式中。如何在不完全覆盖样式的情况下简单地更新样式的属性?
由于
答案 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}}">