Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Change background color for selected ListBox item

Tags:

styles

wpf

This is my XAML so far.

<ScrollViewer Grid.Column="1" Grid.RowSpan="2">      <ListBox   Background="Black" ItemsSource="{Binding Path=ActiveLog}" >         <ListBox.ItemTemplate>             <DataTemplate>                 <Grid Background="Black">                     <Grid.ColumnDefinitions>                         <ColumnDefinition Width="200"></ColumnDefinition>                         <ColumnDefinition Width="*"></ColumnDefinition>                     </Grid.ColumnDefinitions>                     <Grid.RowDefinitions>                         <RowDefinition></RowDefinition>                         <RowDefinition></RowDefinition>                     </Grid.RowDefinitions>                     <TextBlock Grid.Column="0" Grid.Row="0" Foreground="White">                         <TextBlock >Date:</TextBlock>                         <TextBlock  Text="{Binding Path=LogDate}"/>                     </TextBlock>                     <TextBlock Grid.Column="1" Grid.Row="0" Foreground="White">                         <TextBlock >Severity:</TextBlock>                         <TextBlock  Text="{Binding Path=Severity}"/>                     </TextBlock>                     <TextBlock Grid.Column="0" Grid.ColumnSpan="2" Grid.Row="1" Foreground="LightGray" Text="{Binding Path=Message}"></TextBlock>                 </Grid>             </DataTemplate>         </ListBox.ItemTemplate>         <ListBox.Template>             <ControlTemplate>                 <StackPanel Background="Black" IsItemsHost="True" >                 </StackPanel>             </ControlTemplate>         </ListBox.Template>      </ListBox> </ScrollViewer> 

The only problem is that the selected item has a blue box to the right. I assume there is a way to change the selection color, but I can't find it.

like image 401
Jonathan Allen Avatar asked Jan 26 '10 08:01

Jonathan Allen


2 Answers

<UserControl.Resources>     <Style x:Key="myLBStyle" TargetType="{x:Type ListBoxItem}">         <Style.Resources>             <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}"                              Color="Transparent"/>         </Style.Resources>     </Style> </UserControl.Resources>  

and

<ListBox ItemsSource="{Binding Path=FirstNames}"          ItemContainerStyle="{StaticResource myLBStyle}">   

You just override the style of the listboxitem (see the: TargetType is ListBoxItem)

like image 101
juFo Avatar answered Sep 22 '22 12:09

juFo


Or you can apply HighlightBrushKey directly to the ListBox. Setter Property="Background" Value="Transparent" did NOT work. But I did have to set the Foreground to Black.

<ListBox  ... >     <ListBox.ItemContainerStyle>         <Style TargetType="ListBoxItem">             <Style.Triggers>                 <Trigger Property="IsSelected" Value="True" >                     <Setter Property="FontWeight" Value="Bold" />                     <Setter Property="Background" Value="Transparent" />                     <Setter Property="Foreground" Value="Black" />                 </Trigger>             </Style.Triggers>             <Style.Resources>                 <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="Transparent"/>             </Style.Resources>         </Style>                     </ListBox.ItemContainerStyle> </ListBox> 
like image 31
paparazzo Avatar answered Sep 24 '22 12:09

paparazzo