Как сбросить настройку непрозрачности по умолчанию для элемента управления WPF через IsEnabled после явной настройки непрозрачности?

Когда я отключаю элемент управления (кнопку), он становится настолько темным, что очень трудно читать текст.

Поэтому я использую метод расширения, чтобы установить непрозрачность 1,0 (100%), чтобы ее можно было легко прочитать, даже если она отключена:

public static void IsEnabledSpecial(this System.Windows.UIElement control, bool isEnabled) {
    control.IsEnabled = isEnabled;
    control.Opacity = 1.0;          // This makes a disabled control more readable
}

Обычно, когда непрозрачность явно не установлена ​​для элемента управления WPF, кажется, что он переключается между 1,0 (100%), когда элемент управления включен, и 0,35 (35%), когда элемент управления отключен.

Как только я явно установил прозрачность, используя метод расширения, элемент управления после этого перестает переключаться между 1.0 и 0.35, когда я устанавливаю IsEnabled без метода расширения. Он застревает на уровне 1,0 (100%), даже если для IsEnabled установлено значение false;

После того, как я установил непрозрачность, как я могу позже сбросить элемент управления, чтобы сделать его обычную непрозрачность, переключающуюся между 1.0 и 0.35?

1 ответ

Смена Opacity делается через триггеры. Устанавливая значение напрямую, вы переопределяете любое значение, которое может быть создано стилем или триггерами. Это действительно не тот способ делать подобные вещи. Вы должны использовать свои собственные стили и триггеры.

Тем не менее, вы можете достичь желаемого, просто очистив значение, назначенное Opacity:

control.ClearValue(UIElement.OpacityProperty);
Другие вопросы по тегам