WPF, XAML. ListBoxItem trigger doesn't affect all selection?

Here's my problem:

<Style x:Key="listbox_minecraft_container_style" TargetType="{x:Type ListBoxItem}">
    <Setter Property="Background" Value="{DynamicResource image_listbox_item_background}"/>
    <Setter Property="Margin" Value="1"/>
    <Setter Property="BorderBrush" Value="#FF8B8B8B"/>
    <Setter Property="BorderThickness" Value="0.4"/>
    <Setter Property="HorizontalContentAlignment" Value="Center"/>
    <Setter Property="Foreground" Value="Black"/>
    <Setter Property="FontSize" Value="18"/>
    <Setter Property="Width" Value="180"/>
    <Setter Property="FontWeight" Value="SemiBold"/>
    <Style.Triggers>
        <Trigger Property="IsMouseOver" Value="True">
            <Setter Property="Foreground" Value="White"/>
        </Trigger>
        <Trigger Property="IsSelected" Value="True">
            <Setter Property="Background" Value="{DynamicResource image_listbox_item_background_fulopacity}"/>
            <Setter Property="FontWeight" Value="Bold"/>
            <Setter Property="Foreground" Value="#FF42A855"/>
        </Trigger>
    </Style.Triggers>
</Style>

      

If I click on now ListBoxItem

, it doesn't get the background property correctly. It installs new Foreground

and new FontWeight

, but not Background

.

This is mine ListBox

in MainWindow

:

<ListBox x:Name="listBox_vanilla_versions"
         Style="{StaticResource listbox_minecraft}" 
         ItemContainerStyle="{StaticResource listbox_minecraft_container_style}" 
         Margin="10,122,484.592,198.5">
    <ListBox.Items>
        <ListBoxItem Content="hi"/>
    </ListBox.Items>
</ListBox>

      

+3


source to share


1 answer


This is due to the default control template. You have to override this:



<Style x:Key="listbox_minecraft_container_style" TargetType="{x:Type ListBoxItem}">
    <Style.Resources>
        <SolidColorBrush x:Key="Item.MouseOver.Background" Color="#1F26A0DA"/>
        <SolidColorBrush x:Key="Item.MouseOver.Border" Color="#a826A0Da"/>
        <SolidColorBrush x:Key="Item.SelectedInactive.Background" Color="#3DDADADA"/>
        <SolidColorBrush x:Key="Item.SelectedInactive.Border" Color="#FFDADADA"/>
        <SolidColorBrush x:Key="Item.SelectedActive.Background" Color="#3D26A0DA"/>
        <SolidColorBrush x:Key="Item.SelectedActive.Border" Color="#FF26A0DA"/>
    </Style.Resources>
    <Setter Property="Background" Value="{DynamicResource image_listbox_item_background}"/>
    <Setter Property="Margin" Value="1"/>
    <Setter Property="BorderBrush" Value="#FF8B8B8B"/>
    <Setter Property="BorderThickness" Value="0.4"/>
    <Setter Property="HorizontalContentAlignment" Value="Center"/>
    <Setter Property="Foreground" Value="Black"/>
    <Setter Property="FontSize" Value="18"/>
    <Setter Property="Width" Value="180"/>
    <Setter Property="FontWeight" Value="SemiBold"/>
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type ListBoxItem}">
                <Border x:Name="Bd" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" Padding="{TemplateBinding Padding}" SnapsToDevicePixels="true">
                    <ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
                </Border>
                <ControlTemplate.Triggers>
                    <MultiTrigger>
                        <MultiTrigger.Conditions>
                            <Condition Property="IsMouseOver" Value="True"/>
                        </MultiTrigger.Conditions>
                        <Setter Property="Background" TargetName="Bd" Value="{StaticResource Item.MouseOver.Background}"/>
                        <Setter Property="BorderBrush" TargetName="Bd" Value="{StaticResource Item.MouseOver.Border}"/>
                    </MultiTrigger>
                    <MultiTrigger>
                        <MultiTrigger.Conditions>
                            <Condition Property="Selector.IsSelectionActive" Value="False"/>
                            <Condition Property="IsSelected" Value="True"/>
                        </MultiTrigger.Conditions>
                        <Setter Property="BorderBrush" TargetName="Bd" Value="{StaticResource Item.SelectedInactive.Border}"/>
                    </MultiTrigger>
                    <MultiTrigger>
                        <MultiTrigger.Conditions>
                            <Condition Property="Selector.IsSelectionActive" Value="True"/>
                            <Condition Property="IsSelected" Value="True"/>
                        </MultiTrigger.Conditions>
                        <Setter Property="BorderBrush" TargetName="Bd" Value="{StaticResource Item.SelectedActive.Border}"/>
                    </MultiTrigger>
                    <Trigger Property="IsEnabled" Value="False">
                        <Setter Property="TextElement.Foreground" TargetName="Bd" Value="{DynamicResource {x:Static SystemColors.GrayTextBrushKey}}"/>
                    </Trigger>
                </ControlTemplate.Triggers>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
    <Style.Triggers>
        <Trigger Property="IsMouseOver" Value="True">
            <Setter Property="Foreground" Value="White"/>
        </Trigger>
        <Trigger Property="IsSelected" Value="True">
            <Setter Property="Background" Value="{DynamicResource image_listbox_item_background_fulopacity}"/>
            <Setter Property="FontWeight" Value="Bold"/>
            <Setter Property="Foreground" Value="#FF42A855"/>
    </Trigger>
    </Style.Triggers>
</Style>

      

+3


source







All Articles