WinUI 3.0 桌面:鼠标悬停时文本框的背景颜色发生变化

Mar*_*tin 2 c# user-interface xaml winui-3

我已经开始使用 WinUI 3,这是 Microsoft 的新 UI 技术。

我有一个TextBox我想将其设置为只读的,即IsReadOnly="True"(备注:用户仍然可以从中复制内容,这就是为什么我不想将其设置为禁用,即IsEnabled="False"。)

当将其设置为时,IsReadOnly="True"我注意到TextBox仍然保留其默认的白色背景。我想改变这一点,以避免用户因为认为可以更改其内容而点击它。

我决定为背景设置某种灰色:

    <TextBox IsReadOnly="True" Background="SlateGray" Text="The content..."></TextBox>
Run Code Online (Sandbox Code Playgroud)

这按预期工作,但有一个问题:一旦鼠标悬停在背景上,TextBox背景就会变回白色。当鼠标不再位于 上时TextBox,颜色变回指定的灰色背景颜色。

在 WPF 中,我会尝试一些 DataTrigger 以保持格式,但 WinUI 中还没有 DataTrigger(还?)。

我还尝试设置其他与颜色相关的属性,以TextBox查看它们是否与上述行为有关,但设置这些属性并没有改变任何内容:

FocusVisualPrimaryBrush, FocusVisualSecondaryBrush, SelectionHighlightColor, SelectionHighlightColorWhenNotFocused
Run Code Online (Sandbox Code Playgroud)
我愿意接受有关当鼠标悬停在只读“TextBox”上时如何保留背景颜色的各种建议,谢谢。

mm8*_*mm8 6

您可以覆盖一些主题资源:

<TextBox IsReadOnly="True" Background="SlateGray" Text="The content...">
    <TextBox.Resources>
        <SolidColorBrush x:Key="TextControlBackgroundPointerOver" Color="SlateGray" />
        <SolidColorBrush x:Key="TextControlBackgroundFocused" Color="SlateGray" />
    </TextBox.Resources>
</TextBox>
Run Code Online (Sandbox Code Playgroud)

  • @Martin - 在这里找到键名称:“C:\Program Files (x86)\Windows Kits\10\DesignTime\CommonConfiguration\Neutral\UAP\10.0.19041.0\Generic\generic.xaml”(您的确切位置可能会有所不同) (3认同)