我正在尝试根据绑定值将ComboBox的边框更改为更粗和更红,但属性的行为不符合预期。当Value为Null时,下面的代码将正确地将BorderThickness设置为2,但BorderBrush不会设置为Red;我添加了黄色的setter进行测试,但它也无法正常工作。
<ComboBox Grid.Column="2"
Margin="0,10"
ItemsSource="{Binding RelativeSource={RelativeSource AncestorType=Window}, Path=DataContext.AllConfigurations}"
DisplayMemberPath="Name"
SelectedItem="{Binding Value}">
<ComboBox.Style>
<Style TargetType="ComboBox">
<Setter Property="BorderBrush" Value="Yellow"/>
<Style.Triggers>
<DataTrigger Binding="{Binding Value}" Value="{x:Null}">
<Setter Property="BorderBrush" Value="Red" />
<Setter Property="BorderThickness" Value="2" />
</DataTrigger>
</Style.Triggers>
</Style>
</ComboBox.Style>
</ComboBox>
相反,以下代码正确地将BorderBrush设置为Red,但它不会更改BorderThickness。
<ComboBox Grid.Column="2"
Margin="0,10"
ItemsSource="{Binding RelativeSource={RelativeSource AncestorType=Window}, Path=DataContext.AllConfigurations}"
DisplayMemberPath="Name"
SelectedItem="{Binding Value}"
BorderBrush="Red"
BorderThickness="2"/>
因此,按照我的理解总结问题,BorderBrush在直接设置时更改边框颜色,但在从Style中的Setter设置时不会更改; BorderThickness在从样式中的Setter设置时更改边框粗细,但在直接设置时不会更改边框粗细。任何人都可以提供一个解释,说明为什么会发生这种情况以及如何在Value为空时使边框变粗和红色?