将控件颜色更改为默认值

时间:2012-02-21 20:39:06

标签: c# .net wpf xaml

我有一个文本框。当出现错误时,我将borderbrush设置为新的SolidColorBrush(Colors.Red)。当错误修复后,我想切换到文本框边框的默认颜色。我在codebehind而不是xaml。

然而,它取决于系统。我注意到有类似

的东西

SystemColor.ActiveControl等我应该使用这些,如果是,哪一个是文本框的默认边框?

另外我注意到有些东西像Textbox.borderbrushproperty.defaultmetadata.defaultvalue,我无法工作。

任何想法如何切换到默认的borderbrush?谢谢。

4 个答案:

答案 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;