在明确设置不透明度后,如何通过IsEnabled重置WPF控件的默认不透明度?

时间:2015-06-18 18:14:04

标签: c# wpf opacity reset 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%)。

一旦我使用扩展方法显式设置不透明度,当我在没有扩展方法的情况下设置IsEnabled 时,控件此后不再在1.0和0.35之间切换。它被“卡住”在1.0(100%),即使IsEnabled设置为false;

设置不透明度后,如何在以后重置控件以使其正常不透明度在1.0和0.35之间切换?

1 个答案:

答案 0 :(得分:0)

Opacity的更改正在通过触发器完成。通过直接设置值,您将覆盖样式或触发器可能产生的任何值。这真的不是做这种事情的方法。你应该使用自己的风格和触发器。

但是,您可以通过清除分配给Opacity的值来实现您想要的效果:

control.ClearValue(UIElement.OpacityProperty);