我是WPF的新手,但在.NET(Winforms)方面经验丰富.我正在尝试操纵列表框的高亮样式来控制所选项目的聚焦和未聚焦颜色.我发现的每个教程都使用自定义样式为SystemColors.HighlightBrushKey和SystemColors.ControlBrushKey分配新值.但它没有用.在无数个小时试图让它工作之后,我想到它可能与操作系统有关.我一直在Windows 10系统上尝试它.我在Windows 7设置上运行完全相同的代码,并且看,它工作了!
显然旧方法在Windows 10中不起作用(至少对我来说是这样).有人找到了替代方案吗?在一天结束时,我只想让列表框保持明亮的高光,即使它没有焦点.默认的灰色突出显示很难看到,在某些用法中似乎不合适.我有一个真实世界的场景,当焦点远离ListBox时,高光基本上消失的感觉非常不自然.
下面是我在Windows 7上使用的XAML代码,但在Windows 10上没有.(顺便说一下,我也尝试用SystemColors.InactiveSelectionHighlightBrushKey替换SystemColors.ControlBrushKey - 结果是一样的).
<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" …Run Code Online (Sandbox Code Playgroud)