我有一个文本框。当出现错误时,我将borderbrush设置为新的SolidColorBrush(Colors.Red)。当错误修复后,我想切换到文本框边框的默认颜色。我在codebehind而不是xaml。
然而,它取决于系统。我注意到有类似
的东西SystemColor.ActiveControl等我应该使用这些,如果是,哪一个是文本框的默认边框?
另外我注意到有些东西像Textbox.borderbrushproperty.defaultmetadata.defaultvalue,我无法工作。
任何想法如何切换到默认的borderbrush?谢谢。
答案 0 :(得分:2)
您是否必须在代码隐藏中执行此操作?如果没有,您可以使用Trigger
,只有在满足触发条件时才会更改边框颜色。
<Style x:Key="MyTextBoxStyle" TargetType="{x:Type TextBox}">
<Style.Triggers>
<DataTrigger Binding="{Binding ElementName=MyUserControl, Path=HasErrors}">
<Setter Property="BorderBrush" Value="Red" />
</DataTrigger>
</Style.Triggers>
</Style>
答案 1 :(得分:1)
为什么不在启动时保存初始值并使用它?您应该能够使用系统颜色,但如果您更改了默认颜色,这将继续有效。
private Color _defBtnColor;
public MyUserControl()
{
_defBtnColor = someButton.Foreground;
}
private void SetBackToDefault()
{
someButton.Foreground = _defBtnColor;
}
答案 2 :(得分:0)
尝试:
control.BackColor = Color.FromKnownColor(KnownColor.Window);
有关详细信息,请参阅Color.FromKnownColor on MSDN。
答案 3 :(得分:0)
也许我参加聚会有点晚了,但我想你问的是如何将颜色改为系统默认控制?
someControl.BackColor = SystemColors.Control;
或
sslEditMode.BackColor = SystemColors.ButtonFace;