我想将 textblock 的默认前景设置为#FF575757,所以我在 APP.xaml 中对此进行了编码:
<Style TargetType="TextBlock">
<Setter Property="Foreground" Value="#FF575757"></Setter>
</Style>
它运行良好。
然而,在我使用控件模板编写按钮后,我发现无论在 XAML 中设置前景值还是将其悬停,我都无法更改前景:
<Button Foreground="Green">
<Button.Style>
<Style TargetType="{x:Type Button}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Button}">
<Border BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" Name="B" Cursor="{TemplateBinding Cursor}" SnapsToDevicePixels="True" UseLayoutRounding="True" ToolTip="{TemplateBinding ToolTip}">
<Label FontSize="{TemplateBinding FontSize}" Foreground="{TemplateBinding Foreground}" FontFamily="{TemplateBinding FontFamily}" Name="TB" Margin="{TemplateBinding Padding}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Content="{TemplateBinding Content}"></Label>
</Border>
<ControlTemplate.Triggers>
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="IsPressed" Value="false" />
<Condition Property="IsMouseOver" Value="true" />
</MultiTrigger.Conditions>
<MultiTrigger.Setters>
<Setter Property="Foreground" TargetName="TB" Value="White"/>
</MultiTrigger.Setters>
</MultiTrigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</Button.Style>
</Button>
找了好久才发现问题,最后随便发现一件事:删除APP.xaml中的textblock样式,前台问题就可以解决了。
但是我觉得很奇怪,我只声明了 textblock 的默认样式而不声明标签。为什么文本块的样式会影响标签控件?
更重要的是,如果风格导致了这种情况。我如何不仅可以设置默认前景,而且可以随时更改我们想要的?