不在焦点时更改 TextBox 的背景

Changing background of TextBox when not in focus

我在 XAML 文件中有一个文本框,我想更改它的背景颜色,因为当框未处于焦点时默认颜色为灰色。 更改背景-属性 似乎不起作用,我不明白如何在模板中更改它。

这是现在的样子

这就是我想要的样子

您需要编辑控件模板。最方便的方法是在 blend 中打开项目。每个控件都有其默认模板,其中包含用于常见交互(如按下、拖动等)的视觉状态。 请看这篇文章https://msdn.microsoft.com/en-us/library/jj170032.aspx 我想这可能对你有所帮助。

您必须适应 TextBox 的 样式 ()。你会发现 BackgroundElement,你可以改变它的 BackgroundOpacity 例如这样:

<Border x:Name="BackgroundElement" Background="{TemplateBinding Foreground}" Grid.ColumnSpan="2" Margin="{TemplateBinding BorderThickness}" Opacity="1" Grid.Row="1" Grid.RowSpan="1"/>

这应该会在控件处于未聚焦状态时为您提供前景颜色,但您还必须更改占位符的颜色,因为它变得不可见。也尝试使用 VisualStates 来获得适当的状态,包括 focused/unfocused(正常)以外的状态。