我有一个带有ItemTemplateSelector的ListBox。模板选择器返回的所有数据模板都有一个Border。我想在鼠标悬停时更改边框的背景颜色。为了实现这一点,我在列表框中添加了一个带有IsMouseOver触发器的ListBoxItem控件模板,但我不知道如何从触发器的setter引用数据模板的Border。我最好的选择是以下的二传手,但它没有效果:
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Border.Background" Value="Yellow" />
</Trigger>
有没有办法在XAML中执行此操作,或者可能在代码中向下钻取可视树以某种方式找到边框?
我还想在ListBox中选择项目时更改边框的背景颜色。我知道我可以使用Foreground
样式更改ListBoxItem
,如下所示:
<ListBox.ItemContainerStyle>
<Style TargetType="{x:Type ListBoxItem}">
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="Foreground" Value="Red"/>
</Trigger>
</Style.Triggers>
</Style>
</ListBox.ItemContainerStyle>
但与Foreground
不同,Background
不会被继承,因此Border
中的DataTemplate
将不会收到触发器的刷子。
答案 0 :(得分:0)
当使用数据模板中的数据触发器在Background
中选择项目时,我能够更改Border
的{{1}}。
ListBox