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 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)