我有一个列表框和包装文本框的边框。我希望能够根据列表框中是否选择任何项目来更改边框背景的样式。
原因是我使用代码隐藏来确保在某些条件下没有选择任何项目,所以当选择列表框中的项目时我想显示它。
<Border x:Name="brdMyBorder" BorderBrush="Black" BorderBackground="Blue">
<TextBox ... />
</Border>
<ListBox x:Name="lstMyListBox" ItemsSource="{Binding Items}" SelectionChanged="listbox_selectionchanged" />
我意识到我总是可以在SelectionChanged
事件中设置背景,但我宁愿以某种方式使用xaml触发器。我不知道怎么回事。 Border上允许的唯一触发器似乎是EventTrigger。
答案 0 :(得分:1)
将样式与DataTriggers一起使用
<Style x:Key="MyBorderStyle" TargetType="{x:Type Border}">
<Setter Property="Background" Value="Blue" />
<Style.Triggers>
<DataTrigger Binding="{Binding ElementName=lstMyListBox, Path=SelectedIndex}" Value="-1">
<Setter Property="Background" Value="Red" />
</DataTrigger>
</Style.Triggers>
</Style>
请注意,您必须在样式中设置默认背景颜色,否则Background
标记中指定的<Border>
将始终覆盖触发值。
答案 1 :(得分:0)
如何使用<EventTrigger RoutedEvent="SelectionChanged">