我正在与WPF中的样式ListBox控件作斗争。
如果我的鼠标位于ListBoxItem上,我想更改item的BorderBrush
属性。
我的ListBox是自定义控件的一部分,但这里有一些代码:
<ListBox x:Name="suggestionListBox"
SelectionChanged="suggestionListBox_SelectionChanged"
MouseUp="SuggestionListBox_OnMouseDown"
Background="{Binding ElementName=Control, Path=Background}"
ItemTemplate="{Binding ItemTemplate, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type controls:AutoCompleteComboBox}}}"
Width="{Binding ElementName=Control, Path=ActualWidth}"
HorizontalContentAlignment="Stretch">
<ListBox.ItemContainerStyle>
<Style TargetType="ListBoxItem">
<Setter Property="Margin" Value="0" />
<Setter Property="Padding" Value="0" />
<Setter Property="BorderThickness" Value="1"></Setter>
<Style.Triggers>
<Trigger Property="IsSelected" Value="True">
<Setter Property="BorderBrush" Value="Yellow" />
</Trigger>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="BorderBrush" Value="Green" />
</Trigger>
</Style.Triggers>
</Style>
</ListBox.ItemContainerStyle>
</ListBox>
我正在添加像这样的ItemTemplate:
<DataTemplate>
<StackPanel>
<Label Content="{Binding FullName}" />
</StackPanel>
</DataTemplate>
基本上,ListBoxItem中有边框,我无法访问,当IsMouseOver设置为true时会更改。
当鼠标结束时,如何更改该边框的颜色?
答案 0 :(得分:4)
试试这个
<Border Name="ListboxBorderr" Grid.Column="1" CornerRadius="0,3,3,0">
<Border.Style>
<Style>
<Setter Property="Border.Background" Value="Blue"/>
<Style.Triggers>
<Trigger Property="Border.IsMouseOver" Value="True">
<Setter Property="Border.Background" Value="Green" />
</Trigger>
</Style.Triggers>
</Style>
</Border.Style>
</Border>
答案 1 :(得分:0)
您可以尝试为ListBox设置System.Colors并覆盖现有默认值(如HighlightBrushColor),或者,如果使用VisualStudio,请右键单击ListBox - &gt;编辑模板 - &gt;编辑副本并根据您的需要修改此模板。特别是当您想要为ListBox添加更多自定义行为时。
答案 2 :(得分:0)
感谢Jayasri,我来到了这里:
<DataTemplate>
<Border CornerRadius="0,3,3,0">
<Border.Style>
<Style TargetType="Border">
<Setter Property="Border.Background" Value="#0093DD"/>
<Style.Triggers>
<Trigger Property="Border.IsMouseOver" Value="True">
<Setter Property="Border.Background" Value="#70116b" />
<Setter Property="Label.Foreground" Value="White" />
</Trigger>
</Style.Triggers>
</Style>
</Border.Style>
<StackPanel>
<Label Content="{Binding FullName}" >
<Label.Style>
<Style TargetType="Label">
<Style.Triggers>
<Trigger Property="Border.IsMouseOver" Value="True">
<Setter Property="Foreground" Value="White"></Setter>
</Trigger>
</Style.Triggers>
</Style>
</Label.Style>
</Label>
</StackPanel>
</Border>
</DataTemplate>