WPF样式未应用于边框元素
我正在尝试应用一种样式,以使某些边框元素的边框大小和颜色增加,如下所示:WPF样式未应用于边框元素,wpf,styles,Wpf,Styles,我正在尝试应用一种样式,以使某些边框元素的边框大小和颜色增加,如下所示: <Border Name="AlarmBorder"> <Border.Style> <Style TargetType="{x:Type Border}"> <Setter Property
<Border Name="AlarmBorder">
<Border.Style>
<Style TargetType="{x:Type Border}">
<Setter Property="Background">
<Setter.Value>
<SolidColorBrush Color="{Binding AlarmPriority.BackColour, Converter={StaticResource PriorityBrush}}" />
</Setter.Value>
</Setter>
<Setter Property="BorderBrush">
<Setter.Value>
<SolidColorBrush Color="{Binding AlarmPriority.BackColour, Converter={StaticResource PriorityBrush}}" />
</Setter.Value>
</Setter>
<Style.Triggers>
<DataTrigger Binding="{Binding Path=OPCAlarm.OPCAlarmTriggered}" Value="True">
<Setter Property="BorderThickness" Value="10"/>
</DataTrigger>
<DataTrigger Binding="{Binding Path=OPCAlarm.OPCAlarmTriggered}" Value="False">
<Setter Property="BorderThickness" Value="1"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Border.Style>
<Border Name="AlarmBorder" BorderBrush="{Binding AlarmPriority.BackColour, Converter={StaticResource PriorityBrush}}">
这会增加边框的厚度,但不会应用颜色。如果我将颜色移动到边框标签内,如下所示:
<Border Name="AlarmBorder">
<Border.Style>
<Style TargetType="{x:Type Border}">
<Setter Property="Background">
<Setter.Value>
<SolidColorBrush Color="{Binding AlarmPriority.BackColour, Converter={StaticResource PriorityBrush}}" />
</Setter.Value>
</Setter>
<Setter Property="BorderBrush">
<Setter.Value>
<SolidColorBrush Color="{Binding AlarmPriority.BackColour, Converter={StaticResource PriorityBrush}}" />
</Setter.Value>
</Setter>
<Style.Triggers>
<DataTrigger Binding="{Binding Path=OPCAlarm.OPCAlarmTriggered}" Value="True">
<Setter Property="BorderThickness" Value="10"/>
</DataTrigger>
<DataTrigger Binding="{Binding Path=OPCAlarm.OPCAlarmTriggered}" Value="False">
<Setter Property="BorderThickness" Value="1"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Border.Style>
<Border Name="AlarmBorder" BorderBrush="{Binding AlarmPriority.BackColour, Converter={StaticResource PriorityBrush}}">
我得到了正确颜色的边框
因此,在样式级别应用的颜色不会应用(但BorderThickness属性会应用),但在元素级别,颜色会通过
有人能告诉我我做错了什么吗
谢谢你,你的行为是由你自己造成的
本地集属性比样式设置器具有更高的优先级因此,如果设置本地值,无论在样式DataTriggers中设置了什么,它都不会被应用
您需要将其移动到样式设置器,以便可以使用样式数据触发器进行切换
如果转换器仅执行从颜色到画笔的转换,则可以完全忽略该转换,并执行以下操作:
<Setter.Value>
<SolidColorBrush Color="{Binding AlarmPriority.BackColour}"/>
</Setter.Value>
谢谢,但如果您再看一看我的示例,我只是在样式设置器级别设置背景颜色,而不是在本地级别。只有当我将属性移动到本地级别时,它才起作用,但我不希望这样-我希望它处于样式,而这是不起作用的。