WPF: убрать явный цвет переднего плана элемента управления - PullRequest
2 голосов
/ 23 февраля 2011

Два образца TextBox в стандартной цветовой схеме и следующий конструктор дают Box1 с серым передним планом и Box2 с черным передним планом, поскольку цвет переднего плана Box2 был явно установлен.

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

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

Я хотел бы«unset» цвет переднего плана, поэтому Box2 «возвращается» к отключенному по умолчанию цвету и имеет серый передний план, когда IsEnabled имеет значение false.Это возможно?Если да, то как это сделать?

Установка нулевого свойства свойства Foreground не дает желаемого эффекта.Я хочу избегать явного задания цвета переднего плана на серый, если это возможно, поскольку он не совместим с настроенными цветовыми схемами.

Ответы [ 2 ]

6 голосов
/ 23 февраля 2011

Я не уверен, что вы это имеете в виду, но попробуйте следующий код:

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

        Box2.Foreground = Brushes.Black;
        Box1.IsEnabled = false;
        Box2.IsEnabled = false;
        Box2.ClearValue(TextBox.ForegroundProperty);
    }
}
0 голосов
/ 23 февраля 2011

Используйте событие 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...