WPF 更改(覆盖)所有控件中的突出显示和边框颜色

WPF change (override) highlight and border color in all controls

在问这个问题之前,我研究并测试了很多代码。

IDE: VS2022OSWindows 11App: 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>

TextBoxPasswordBox 通过 SelectionBrush 属性 控制高光画笔。并非所有控件都使用 SystemColors.HighlightBrushKey。例如,SystemColors.HighlightBrushKeyDataGrid 使用,但不被 ListBox 使用。

使用SelectionOpacity控制高光画笔的不透明度。

要全局更改 SelectionBrush,您必须将 Style 添加到 App.xaml 资源:

App.xaml

<ResourceDictionary>
  <Style TargetType="PasswordBox">
    <Setter Property="SelectionBrush" Value="Red" />
    <Setter Property="SelectionOpacity" Value="0.8" />
  </Style>

  <Style TargetType="TextBox">
    <Setter Property="SelectionBrush" Value="Red" />
    <Setter Property="SelectionOpacity" Value="0.8" />
  </Style>
</ResourceDictionary>