我有几年的软件开发经验,但我对WPF是全新的。我刚刚开始与一家使用WPF的新公司合作。我正在工作中学习。
我一直在到处寻找这个问题的解决方案。我已经看到了几个解决方案,但当我尝试他们从来没有工作。我在这里找到的一个解决方案是这样的
<ComboBox.Resources>
<SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="#FFE89519" />
<SolidColorBrush x:Key="{x:Static SystemColors.HighlightTextBrushKey }" Color="#FFE89519" />
</ComboBox.Resources>
这个解决方案不起作用。在其中一个答案的评论中,这个人说它在Windows 8中不起作用。难道你不喜欢一致性吗?显然,Windows 11也是如此。
另一个解决方案是这样创建MultiTrigger
<ComboBoxItem>
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="IsSelected" Value="True"/>
<Condition Property="IsMouseOver" Value="False"/>
<Condition Property="IsKeyboardFocused" Value="False"/>
</MultiTrigger.Conditions>
<Setter Property="Background" TargetName="MyComboBox" Value="#D1E8FF"/>
<Setter Property="BorderBrush" TargetName="MyComboBox" Value="#66A7E8"/>
</MultiTrigger>
</ComboBoxItem>
但这只是在我的代码中产生了错误。它不知道如何处理IsSelected,IsMouseOver或IsKeyboardFocused。我发现这很奇怪,因为它们被列为微软网站上组合框的属性。
有没有人有任何其他的解决方案,在2022年,而不仅仅是2002年?
我所要做的就是在使用ComboBox下拉列表上的向上和向下箭头键时更改突出显示栏的颜色。
1条答案
按热度按时间3lxsmp7m1#
项模板由Windows主题设置。创建自定义控件时,其默认模板将写入Themes\Generic.xaml文件。对于Aero主题,则为Themes\Aero.xaml,依此类推。
你找到的解决方案不起作用的原因是它们是针对Windows 7主题中使用的模板的。自从Windows 8(或8.1 -我不记得具体是什么了)以来,元素模板已经发生了变化。
对于当前版本的Windows 10,ComboBoxItem模板为:
正如您所看到的,XAML突出显示颜色是由StaticResource键设置的,因此不能更改。
您可以在应用程序中设置默认样式,将StaticResource替换为DynamicResource。然后您可以像在Windows 7中一样更改键。
第一次