我制作了“图标按钮”:上面的按钮和两个 TextBlock(在 DockPanel 内)。一个 TextBlock 是“图标”(w Awesome 字体),另一个用于按钮上的文本。 问题:当我在 VS 设计器中设置
IsEnabled=false
时,只有第二个 TextBlock 被禁用 - 图标仍然具有原始颜色(没有“禁用”外观)。为什么??
不幸的是,在笨拙的 C# 中,你只能覆盖作者允许的内容,所以我必须创建新的“IsEnabled”属性:
public new bool IsEnabled
{
get => base.IsEnabled;
set {
base.IsEnabled = value;
txtIcon.Opacity = (value ? 1.0 : 0.4);
}
}
但是,如果我在 XAML 中设置
IsEnabled=false
,图标不会被禁用。并且只有当在代码中我设置了btnOK.IsEnabled=false
时,整个按钮才会禁用外观。
我完全迷失在这种笨拙的行为中 - 即使当我强制按钮为图标设置“禁用外观”时,它在 VS 设计器中仍然行为不当(设计器是否设置了另一个“IsEnabled”??)。
有任何想法吗? (理想情况下,如果我不需要覆盖“IsEnabled”)
UPD 对于没有注意到问题的人:我们在按钮上有两个绝对相等的 TextBlock。我们设置
Button.IsEnabled=false
。但是一个 TextBlock(带有按钮文本)变成灰色,而另一个 TextBlock(带有一个符号)则保持不变!一定不能这样。
如果您改变方法:
<Button Width="100" Height="50">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<!-- Icon -->
<Image Grid.Column="0" Source="..." Width="16" Height="16"/>
<!-- Text -->
<TextBlock Grid.Column="1" Text="text"/>
</Grid>
但即使它不起作用,你也可以随时更改文本的颜色!
解决方法