【发布时间】:2022-01-11 00:20:29
【问题描述】:
在问这个问题之前,我研究并测试了很多代码。
IDE:VS2022。 操作系统:Windows 11。 应用:WPF.NET 6(核心)C#T-SQL
我正在尝试覆盖资源字典中的 SystemColors。
我可以覆盖这个值成功:
<SolidColorBrush x:Key="{x:Static SystemColors.ControlTextBrushKey}" Color="Red" />
问题是,我无法使用以下方法覆盖突出显示颜色:
<SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="Red" />
结果:
我做错了什么?
感谢您的帮助。
更新:
使用样式不起作用。
<Style TargetType="PasswordBox">
<Setter Property="SelectionBrush" Value="Red" />
<Setter Property="SelectionTextBrush" Value="Red" />
</Style>
【问题讨论】:
-
TextBox 和 PasswordBox 通过 SelectionTextBrush 属性控制它们的高亮画笔。并非所有控件都使用 SystemColors.HighlightBrushKey。例如,DataGrid 使用 SystemColors.HighlightBrushKey,但 ListBox 不使用。
-
您必须在 App.xaml 中创建一个以 TextBox 和 PasswordBox 为目标的样式才能全局设置 SelectionTextBrush。
-
感谢您的帮助,但将
<SolidColorBrush x:Key="{x:Static SystemColors.SelectionTextBrushKey}" Color="Red"/>添加到 XAML 会返回运行时错误。 -
使用
Style100% 有效,但问题是这样做需要更多的 XAML 代码。我想知道是否可以覆盖系统颜色,因为这样做更容易。 -
SelectionTextBrushKey 不存在。编写所需的样式需要三行代码(请参阅我的答案)。