WPF ListBox Highlight in Windows 10

Ich bin relativ neu in WPF, habe aber Erfahrung mit .NET (Winforms). Ich versuche, den Hervorhebungsstil eines Listenfelds zu manipulieren, um die fokussierte und nicht fokussierte Farbe des ausgewählten Elements zu steuern. Jedes einzelne Tutorial zu diesem Thema, das ich gefunden habe, verwendet einen benutzerdefinierten Stil, um den SystemColors.HighlightBrushKey und SystemColors.ControlBrushKey einen neuen Wert zuzuweisen. Aber es funktioniert nicht. Nachdem ich unzählige Stunden lang versucht hatte, dies zum Laufen zu bringen, kam mir der Gedanke, dass es vielleicht um das Betriebssystem ging. Ich hatte es auf einem Windows 10-System versucht. Ich habe den exakt gleichen Code auf einem Windows 7-Setup ausgeführt, und siehe da, es hat funktioniert!

So anscheinend funktioniert die alte Methode in Windows 10 nicht (zumindest sieht es für mich so aus). Hat jemand eine Alternative gefunden? Letztendlich möchte ich nur, dass das Listenfeld die hellen Glanzlichter beibehält, auch wenn es keinen Fokus hat. Die standardmäßig eingestellte graue Markierung ist schwer zu erkennen und scheint in einigen Fällen nicht angemessen zu sein. Ich habe ein reales Szenario, in dem es sehr unnatürlich ist, wenn das Highlight im Grunde genommen verschwindet, wenn sich der Fokus von der ListBox entfernt.

Below ist der verwendete XAML-Code, der unter Windows 7 und nicht unter Windows 10 funktioniert. (Übrigens habe ich auch versucht, SystemColors.ControlBrushKey durch SystemColors.InactiveSelectionHighlightBrushKey zu ersetzen. Die Ergebnisse waren dieselben.)

    <Window x:Class="TestApp.TestWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:TestApp"
        mc:Ignorable="d"
        Title="TestWindow" Height="300" Width="300" Loaded="Window_Loaded">
    <Window.Resources>
        <Style x:Key="myListboxStyle">
            <Style.Resources>
                <!-- Background of selected item when focused -->
                <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="Red" />
                <!-- Background of selected item when not focused -->
                <SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}" Color="Green" />
            </Style.Resources>
        </Style>
    </Window.Resources>
    <Grid>
        <ListBox x:Name="listBox" Style="{StaticResource myListboxStyle}" HorizontalAlignment="Left" Height="100" Margin="22,18,0,0" VerticalAlignment="Top" Width="237">
            <ListBoxItem>Test 1</ListBoxItem>
            <ListBoxItem>Test 2</ListBoxItem>
            <ListBoxItem>Test 3</ListBoxItem>
        </ListBox>
            <TextBox x:Name="textBox" HorizontalAlignment="Left" Height="23" Margin="50,165,0,0" TextWrapping="Wrap" Text="TextBox" VerticalAlignment="Top" Width="120"/>

    </Grid>
</Window>

Antworten auf die Frage(8)

Ihre Antwort auf die Frage