WPF:删除控件的显式前景色

时间:2011-02-23 19:42:35

标签: c# wpf-controls

标准颜色方案中的两个示例文本框和以下构造函数生成具有灰色前景的Box1和具有黑色前景的Box2,因为已明确设置Box2的前景颜色。

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();

        Box2.Foreground = Brushes.Black;
        Box1.IsEnabled = false;
        Box2.IsEnabled = false;
    }
}

我想“取消设置”前景色,因此当IsEnabled设置为false时,Box2“回退”为默认的禁用颜色并且具有灰色前景。这可能吗?如果是这样,它是如何完成的?

将Foreground属性设置为null不具有所需的效果。我希望尽可能避免将Foreground颜色显式设置为Gray,因为它与自定义颜色方案不兼容。

2 个答案:

答案 0 :(得分:6)

我不确定这是不是你的意思,但请尝试按照以下代码:

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();

        Box2.Foreground = Brushes.Black;
        Box1.IsEnabled = false;
        Box2.IsEnabled = false;
        Box2.ClearValue(TextBox.ForegroundProperty);
    }
}

答案 1 :(得分:0)

使用事件IsEnabledChanged设置框的前景。

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();

        Box2.Foreground = Brushes.Black;
        Box1.IsEnabled = false;
        Box2.IsEnabled = false;
        Box1.IsEnabledChanged += new DependencyPropertyChangedEventHandler(label1_IsEnabledChanged);
    }

    void label1_IsEnabledChanged( object sender, DependencyPropertyChangedEventArgs e ) {
        //Set the foreground you want here!
    }

}

但是如果您不想显式设置颜色,请尝试将其设置为Transparent o.O