将控件的颜色更改为默认颜色

本文关键字:颜色 默认 控件 | 更新日期: 2023-09-27 18:25:16

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

然而,它依赖于系统。我注意到有类似的东西

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

我还注意到有一些类似于Textbox.borderbrushproperty.defaultmetadata.defaultvalue的东西,但我没有成功。

你知道如何切换到默认borderbrush吗?非常感谢。

将控件的颜色更改为默认颜色

你必须在代码背后完成吗?如果没有,您可以使用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>

为什么不在启动时保存初始值并使用它?您应该能够使用系统颜色,但如果您更改默认颜色,这将继续工作。

private Color _defBtnColor;
public MyUserControl()
{
    _defBtnColor = someButton.Foreground;
}  
private void SetBackToDefault()
{
    someButton.Foreground = _defBtnColor;
}

尝试:

control.BackColor = Color.FromKnownColor(KnownColor.Window);

有关详细信息,请参阅MSDN上的Color.FromKnownColor。

也许我参加派对有点晚了,但我想你在问如何将颜色更改为系统默认控制?

someControl.BackColor = SystemColors.Control;

sslEditMode.BackColor = SystemColors.ButtonFace;