我有一个像这样的按钮样式
<Style x:Key="NormalButtonStyle" TargetType="{x:Type Button}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Button}">
<Grid x:Name="ContentSite">
<Grid x:Name="ContainerGrid">
<ContentPresenter x:Name="Presenter" Style="{DynamicResource NormalButtonTextStyle}"/>
...
ContentPresenter的样式所在位置
<Style x:Key="NormalButtonTextStyle" BasedOn="{StaticResource DefaultFontStyle}">
<Setter Property="TextElement.Foreground" Value="{DynamicResource NormalTextOnDarkBackgroundBrush}" />
...
那么我就像这样定义了我的按钮
<Button Style="{StaticResource NormalButtonStyle}">
<Button.Content>
<TextBlock Text="Cancel"/>
...
但是TextBlock
最终没有采用NormalButtonTextStyle
风格。我在运行时检查了元素,内容呈现器确实具有正确的文本前景色,但是子TextBlock
最终继承了完全不同的东西,并获得了ControlTextBrush
的前景色。
我是否误解了样式如何应用于子元素?我应该如何定义按钮,以便正确地应用样式?
ContentPresenter
样式包含在ControlTemplate.Resources
中吗? - XAMlMAX