关于c#:禁用后,如何将WPF圆形按钮显示为灰色?

How to gray out WPF circle button when it is disabled?

我希望整个波顿都变灰:
enter

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<Button Width="120" Cursor="Hand"
            Name="btnPrintCard"
            Click="btnPrintCard_Click"
            Height="120"
            HorizontalAlignment="Center"
                Style="{DynamicResource MetroCircleButtonStyle}">
    <Rectangle Width="80" Height="80" Fill="Green">
        <Rectangle.OpacityMask>
            <VisualBrush Stretch="Fill" Visual="{iconPacks:PackIconFontAwesome print}" />
        </Rectangle.OpacityMask>
    </Rectangle>
    <Button.ToolTip>
        <ToolTip>
            <StackPanel>
                <TextBlock FontWeight="Bold">Print</TextBlock>
                <TextBlock>Start printing card</TextBlock>
            </StackPanel>
        </ToolTip>
    </Button.ToolTip>
</Button>

*我已经找到了使按钮图像变灰的主题,但是在我的情况下,我使用了我不知道如何使其相同的图标。


这应该起作用:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<Rectangle Width="80" Height="80">
    <Rectangle.OpacityMask>
        <VisualBrush Stretch="Fill" Visual="{iconPacks:PackIconFontAwesome print}" />
    </Rectangle.OpacityMask>
    <Rectangle.Style>
    <Style TargetType="Rectangle">
        <Setter Property="Fill" Value="Green" />
        <Style.Triggers>
            <Trigger Property="IsEnabled" Value="False">
                <Setter Property="Fill" Value="Gray" />
            </Trigger>
        </Style.Triggers>
    </Style>
    </Rectangle.Style>
</Rectangle>

确保从矩形中删除Fill="Green",因为这会覆盖样式中设置的颜色。

由于IsEnabled在VisualTree中是继承的,因此,只要禁用了其父级(或任何祖先,例如您的按钮),矩形IsEnabled将为false