Laden...

ListBoxItem Template: Selektion und Highlighting

Letzter Beitrag vor 14 Jahren 3 Posts 601 Views
ListBoxItem Template: Selektion und Highlighting

Hi,

ich habe ein Template für ein ListBoxItem neu geschrieben und wollte es gern so aufbauen, dass, wenn man mit der Maus drüber fährt, das Item aufleuchtet (Background / ColorAnimation / MouseEnter und MouseLeave) und wenn es selektiert wird, eine andere Farbe erhält (Background / Setter).
Das Problem: Wenn ich es selektiert habe und mit der Maus runterfahre, dann wird die Selektion ausgeblendet, da ja das MouseLeave - Event geworfen wird.

Ich habe mich da schon mit MultiTriggern rumgeschlagen, aber bis jetzt habe ich keine Lösung gefunden. Allerdings glaube ich, dass dies ein häufiges Problem ist. Kennt jamnd zufällig eine Lösung?


<EventTrigger RoutedEvent="MouseEnter">
<!--ColorAnimation-->
</EventTrigger>

<EventTrigger RoutedEvent="MouseLeave">
<!--ColorAnimation-->
</EventTrigger>

<Trigger Property="IsSelected" Value="true">
 <Setter TargetName="Border" Property="Background" Value="Yellow"/>
</Trigger>

Bei den MultiTriggern bist du schon richtig, zu beachten ist aber das die Trigger von oben nach unten alle abgearbeitet werden, eventuell hattest du das MultiTrigger oben, der wurde aufgerufen und unten ein anderer nochmal.

Entweder die Reihenfolge durch denken, oder die anderen Trigger auch durch ein MultiTrigger austauschen und die Properties negieren.

Danke, es war wirklich ein Problem der Reihenfolge.
Ich habe es jetzt so gelöst:


                        <Trigger Property="IsSelected" Value="true">
                            <Setter TargetName="Border" Property="Background" Value="Yellow"/>
                        </Trigger>
                        
                                            
                        <MultiTrigger>
                            <MultiTrigger.Conditions>
                                <Condition Property="IsSelected" Value="false"/>
                                <Condition Property="IsMouseOver" Value="false"/>
                            </MultiTrigger.Conditions>
                            <MultiTrigger.EnterActions>
                                <BeginStoryboard>
                                    <Storyboard>
                                        <ColorAnimation
                                        Storyboard.TargetName="Border"
                                        Storyboard.TargetProperty="Background.Color"
                                        To="SkyBlue" AutoReverse="False" Duration="0:0:0.5"/>
                                    </Storyboard>
                                </BeginStoryboard>
                            </MultiTrigger.EnterActions>
                            <MultiTrigger.ExitActions>
                                <BeginStoryboard>
                                    <Storyboard>
                                        <ColorAnimation
                                        Storyboard.TargetName="Border"
                                        Storyboard.TargetProperty="Background.Color"
                                        To="AliceBlue" AutoReverse="False" Duration="0:0:0.5"/>
                                    </Storyboard>
                                </BeginStoryboard>
                            </MultiTrigger.ExitActions>
                        </MultiTrigger>