Как отключить определенное событие для элемента ListBox?

У меня есть листбокс. Я задал ему триггеры для "Мышь наведена" на элемент и для "Выбранного" элемента

Тоесть когда наводишься на элемент с ним что-то происходит( в моем случае меняются цвета) и когда он выбран тоже что-то происходит.

Из-за этого, когда я навожусь на уже выбранный элемент, изменения триггера "Мышь наведена" как бы затмевают изменения триггера "Выбранный элемент"

Я хочу чтобы при наведении на элемент, проверять выбран ли он, и если выбран то не показывать изменения, связанные с событием "Мышь наведена"

Подскажите пожалуйста, можно ли так сделать?

Вот листинг стиля листбокса:

<Style x:Key="ListBox1" TargetType="ListBoxItem">
            <Setter Property="Padding" Value="5"/>
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="ListBoxItem">
                        <Border x:Name="border" Background="{TemplateBinding Background}">
                            <StackPanel Orientation="Horizontal" Margin="15, 2">
                                <Border CornerRadius="3" Width="64" Height="70" Background="#393951">
                                    <Border x:Name="icoBord" Background="{Binding Path=Background, RelativeSource={RelativeSource TemplatedParent}}">
                                        <Image Source="{Binding ImagePath}" Width="48" Height="48"/>
                                    </Border>
                                </Border>
                                <TextBlock VerticalAlignment="Center" HorizontalAlignment="Center" FontSize="14" FontFamily="Segoe UI" Foreground="#D4D4E5" Text="{Binding Name}" />
                            </StackPanel>
                        </Border>
                        <ControlTemplate.Triggers>
                            <Trigger Property="IsSelected" Value="True">
                                <Setter TargetName="icoBord" Property="Background" Value="#2F325A" />
                                <Setter TargetName="border" Property="BorderBrush" Value="#4750D1" />
                                <Setter TargetName="border" Property="BorderThickness" Value="1"></Setter>
                                <Setter TargetName="border" Property="CornerRadius" Value="3"></Setter>
                            </Trigger>
                            <Trigger Property="IsMouseOver" Value="True">
                                <Setter TargetName="border" Property="Background" Value="#2f2f40"/>
                                <Setter TargetName="border" Property="CornerRadius" Value="5"></Setter>
                            </Trigger>
                        </ControlTemplate.Triggers>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>

Ответы (1 шт):

Автор решения: qwe qwerty

Для решения проблемы следует использовать:

<MultiTrigger>

MultiTrigger позволяет применять изменения к элементу только в случае выполнения нескольких условий одновременно.

На всякий случай пример кода:

<MultiTrigger>
    <MultiTrigger>
        <Condition Property="IsMouseOver" Value="True"/>
        <Condition Property="IsSelected" Value="False"/>
    </MultiTrigger.Conditions>
    <Setter TargetName="border" Property="Background" Value="#D9DEFD"/>
    <Setter TargetName="border" Property="CornerRadius" Value="5"/>
</MultiTrigger>

Этот код исполняет два setter-а только в том случае, когда и IsMouseOver равен True и IsSelected равен False.

→ Ссылка