使用 OutlinedTextBox 样式时如何更改标签背景?
How to change the label background when using the OutlinedTextBox style?
我在使用 TextBox
轮廓样式时遇到了一个问题。我设法更改了 App.xaml
中的字体颜色,但我不知道如何在单击 TextBox
时更改文本背景。你知道该怎么办吗?
<TextBox x:Name="txt_Username"
materialDesign:HintAssist.Hint="Enter username"
Background="{x:Null}"
Height="70"
Width="300"
FontFamily="Tolkien"
BorderThickness="2"
BorderBrush="{DynamicResource {x:Static SystemColors.HighlightBrushKey}}"
Style="{DynamicResource MaterialDesignOutlinedTextBox}"
FontSize="22"
Foreground="#FFEBE2E2"
Margin="0,-58,0,221" CaretBrush="{x:Null}" SelectionBrush="{x:Null}"
/>
如果要在non-floating和浮动状态下都设置提示背景,请使用提示辅助。
materialDesign:HintAssist.Background="Red"
为non-floating和浮动状态设置不同的背景是比较困难的。不幸的是,MaterialDesign 确实公开了一个 属性 来检测提示当前是否浮动。它仅在 TextBox
的 控件模板中的 SmartHint
元素 上可用。因此,您不能简单地从外部访问它并使用样式触发器来更改背景颜色。
如果你想要一个确定的解决方案,你必须从 GitHub here 中复制默认样式(多个,因为概述的样式是基于其他样式的)并适应你的版本 MaterialDesignTextBoxBase
.
浮动样式的触发器是MultiTrigger
in line 360。
判断内部的条件floating state is in line 364.
<Condition SourceName="Hint" Property="IsHintInFloatingPosition" Value="True" />
适配第367行,设置要申请浮动状态的笔刷
<Setter Property="wpf:HintAssist.Background" Value="Red" />
其他派生样式一直到MaterialDesignOutlinedTextBox
都不需要改编,但还是要复制过来覆盖,否则会以原来的基础样式为基础。
目前有一个简单的解决方法。浮动状态的画笔设置为 MaterialDesignPaper
画笔,仅在这种情况下使用,因此在本地覆盖它会更改背景颜色,但前提是您没有使用提示辅助设置背景。它将优先。
<TextBox x:Name="txt_Username"
...>
<TextBox.Resources>
<SolidColorBrush x:Key="MaterialDesignPaper" Color="Red"/>
</TextBox.Resources>
</TextBox>
请注意,将来可能会更改实施并破坏此解决方法。
我在使用 TextBox
轮廓样式时遇到了一个问题。我设法更改了 App.xaml
中的字体颜色,但我不知道如何在单击 TextBox
时更改文本背景。你知道该怎么办吗?
<TextBox x:Name="txt_Username"
materialDesign:HintAssist.Hint="Enter username"
Background="{x:Null}"
Height="70"
Width="300"
FontFamily="Tolkien"
BorderThickness="2"
BorderBrush="{DynamicResource {x:Static SystemColors.HighlightBrushKey}}"
Style="{DynamicResource MaterialDesignOutlinedTextBox}"
FontSize="22"
Foreground="#FFEBE2E2"
Margin="0,-58,0,221" CaretBrush="{x:Null}" SelectionBrush="{x:Null}"
/>
如果要在non-floating和浮动状态下都设置提示背景,请使用提示辅助。
materialDesign:HintAssist.Background="Red"
为non-floating和浮动状态设置不同的背景是比较困难的。不幸的是,MaterialDesign 确实公开了一个 属性 来检测提示当前是否浮动。它仅在 TextBox
的 控件模板中的 SmartHint
元素 上可用。因此,您不能简单地从外部访问它并使用样式触发器来更改背景颜色。
如果你想要一个确定的解决方案,你必须从 GitHub here 中复制默认样式(多个,因为概述的样式是基于其他样式的)并适应你的版本 MaterialDesignTextBoxBase
.
浮动样式的触发器是
MultiTrigger
in line 360。判断内部的条件floating state is in line 364.
<Condition SourceName="Hint" Property="IsHintInFloatingPosition" Value="True" />
适配第367行,设置要申请浮动状态的笔刷
<Setter Property="wpf:HintAssist.Background" Value="Red" />
其他派生样式一直到MaterialDesignOutlinedTextBox
都不需要改编,但还是要复制过来覆盖,否则会以原来的基础样式为基础。
目前有一个简单的解决方法。浮动状态的画笔设置为 MaterialDesignPaper
画笔,仅在这种情况下使用,因此在本地覆盖它会更改背景颜色,但前提是您没有使用提示辅助设置背景。它将优先。
<TextBox x:Name="txt_Username"
...>
<TextBox.Resources>
<SolidColorBrush x:Key="MaterialDesignPaper" Color="Red"/>
</TextBox.Resources>
</TextBox>
请注意,将来可能会更改实施并破坏此解决方法。