我有一些这样的标签:
<Label x:Name="ledCalculate" Width="Auto" Content="Calculate" Height="25" FontFamily="Cambria" FontSize="18.667" VerticalContentAlignment="Bottom" Padding="10,0,0,0" BorderThickness="0,0,0,1" Style="{StaticResource RightPanelLabels}" Grid.Row="11"/>
我为其定义了样式:
<Style TargetType="Label" x:Key="RightPanelLabels" BasedOn="{StaticResource
{x:Type Label } }">
<Setter Property="Foreground" Value="#FFEABEBE"></Setter>
<Setter Property="BorderBrush" Value="#FF818080"></Setter>
<Setter Property="BorderThickness" Value="0,0,0,1"></Setter>
</Style>
样式中的边框厚度设置器适用于控件,并且在样式中具有较高的优先级,Visual Studio忽略其在本地的值,但是样式中的前景设置器不适用,当我在本地设置时,它适用,
为什么样式的边框粗度优先,而局部的前景优先呢???????
我知道对于像波纹管这样的标签有一个默认模板,它们具有IsEnabled
的触发器,该模板是这样的:
<ControlTemplate TargetType="{x:Type Label}">
<Border BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" Padding="{TemplateBinding Padding}" SnapsToDevicePixels="True">
<ContentPresenter ContentTemplate="{TemplateBinding ContentTemplate}" Content="{TemplateBinding Content}" ContentStringFormat="{TemplateBinding ContentStringFormat}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" RecognizesAccessKey="True" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
有人可以帮助我吗? 对不起,我的英语。
答案 0 :(得分:0)
您必须在样式设置器中更改属性名称
<Setter Property="TextBlock.Foreground" Value="#FFEABEBE">
答案 1 :(得分:0)
所有本地样式优先于定义的样式,因此内联样式将始终覆盖资源中定义的其他样式。
当我运行代码时,我发现Style的BorderThickness
也被BorderThickness
的本地内联样式值覆盖。
我也很想听听是否有解决方法。 我也找到了这篇文章,希望对您有所帮助Same problem with a style trigger though
编辑:
尝试使用此方法发现的几种不同方法后,我们可以覆盖标签的内联Foreground
样式,但是我不知道这是否是最健康的方法
<Style TargetType="{x:Type Label}">
<Setter Property="ContentTemplate">
<Setter.Value>
<DataTemplate>
<TextBlock Text="{Binding}"
Foreground="Red" />
</DataTemplate>
</Setter.Value>
</Setter>
</Style>
<Label FontSize="50" Foreground="Black"> I am Black inline, Red on Style </Label>