Laden...

ListViewItem ist stets blau

Erstellt von LordVader vor 15 Jahren Letzter Beitrag vor 15 Jahren 1.561 Views
L
LordVader Themenstarter:in
30 Beiträge seit 2008
vor 15 Jahren
ListViewItem ist stets blau

Hallo Gemeinde, ich habe ein ListView mit einem GridView darin. Wenn ich mit der Mouse einen Eintrag anklicke wird dieser automatisch blau hinterlegt. Kann man das irgendwie verhindern. Ich habe diverse Style-Eigenschaften in meinem XAML-Code probiert - ohne Erfolg. Der IsSelected - Zustand tritt offenbar erst ein, wenn der ListView den Focus verliert. IsFocused bringt auch nix. Welche Eigenschaft muss ich ändern?


<Style TargetType="{x:Type ListViewItem}"  >
            <Setter Property="Height" Value="17" />
            <Setter Property="Background" Value="Transparent" />
            <Setter Property="Foreground" Value="White"/>
            <Setter Property="FontFamily" Value="Verdana" />
            <Setter Property="FontSize" Value="10" />
            <Style.Triggers>
                <Trigger Property="IsMouseOver" Value="true">
                    <Setter Property="Foreground" Value="White" />
                    <Setter Property="Background" Value="#FF567676" />
                </Trigger>
                <Trigger Property="IsSelected" Value="true">
                    <Setter Property="Foreground" Value="Black" />
                    <Setter Property="Background" Value="White" />
                </Trigger>
                <Trigger Property="IsFocused" Value="true">
                    <Setter Property="Foreground" Value="Black" />
                    <Setter Property="Background" Value="White" />                    
                </Trigger>
            </Style.Triggers>
        </Style>

Weg bekomme ich den blauen Balken, indem ich am Ende des SelectionChanged - Events einfach irgend einem anderen Control den Focus verpasse. Aber das muss doch auch anders, sauberer, gehen.

Und wie kann man eigentlich ein Thema auf "erledigt" setzen?

MAY THE FORCE BE WITH YOU !!!

.
332 Beiträge seit 2006
vor 15 Jahren

An dem Problem habe ich auch sehr lange gearbeitet.
In dem folgenden XAML Ausschnitt sind 3 Trigger aufgeführt. Ich denke, dass wird dein Problem lösen.

 <ControlTemplate TargetType="{x:Type ListViewItem}">
                                <Border Margin="10" BorderBrush="White" BorderThickness="5" CornerRadius="10" Padding="10" Background="{TemplateBinding Background}">
                                    <ContentControl HorizontalContentAlignment="Stretch" HorizontalAlignment="Center">
                                        <StackPanel>
                                            <Image Source="{Binding Path=ImgPath}" Width="150" Height="100" Stretch="Fill" Margin="5"/>
                                            <TextBlock
                                                TextWrapping="Wrap"
                                                Width="150"
                                                Text="{Binding Path=ElementContent}"
                                                Foreground="{TemplateBinding Foreground}"
                                                Background="{TemplateBinding Background}">
                                            </TextBlock>
                                        </StackPanel>
                                    </ContentControl>
                                </Border>

                                <ControlTemplate.Triggers>

                                    <Trigger Property="IsSelected" Value="true">
                                        <!--Wenn das Item selected ist und aktiv-->
                                        <Setter Property="Background" Value="Black"/>
                                        <Setter Property="Foreground" Value="Yellow"/>
                                    </Trigger>
                                    <Trigger Property="IsSelected" Value="false">
                                        <!--Wenn das Item nicht selected ist-->
                                        <Setter Property="Background" Value="Yellow"/>
                                        <Setter Property="Foreground" Value="Black"/>
                                    </Trigger>
                                    <MultiTrigger>
                                        <MultiTrigger.Conditions>
                                            <Condition Property="IsSelected" Value="true"/>
                                            <Condition Property="Selector.IsSelectionActive" Value="false"/>
                                        </MultiTrigger.Conditions>
                                        <!--Wenn das Item selected ist und nicht aktiv-->
                                        <Setter Property="Background" Value="Black"/>
                                        <Setter Property="Foreground" Value="Orange"/>
                                    </MultiTrigger>
                                </ControlTemplate.Triggers>
                            </ControlTemplate>