禁用按钮但保留背景颜色

时间:2014-09-12 07:02:32

标签: wpf button background styles isenabled

我有以下按钮样式,工作正常:

<Style TargetType="Button" BasedOn="{StaticResource {x:Type Button}}">
        <Setter Property="SnapsToDevicePixels" Value="true"/>
        <Setter Property="OverridesDefaultStyle" Value="true"/>
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="Button">
                    <Border x:Name="Border"
                        CornerRadius="2" BorderThickness="1"
                        Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}">
                        <ContentPresenter Margin="2" HorizontalAlignment="Center" VerticalAlignment="Center" RecognizesAccessKey="True"/>
                    </Border>
                    <ControlTemplate.Triggers>
                        <Trigger Property="IsEnabled" Value="false">
                            <Setter TargetName="Border" Property="Background" Value="{StaticResource DisabledBackgroundBrush}" />
                            <Setter TargetName="Border" Property="BorderBrush" Value="{StaticResource DisabledBorderBrush}" />
                            <Setter Property="Foreground" Value="{StaticResource DisabledForegroundBrush}"/>
                        </Trigger>
                    </ControlTemplate.Triggers>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

在按钮本身定义了更多样式我更改按钮背景(绿色表示活动)

<Button>
    <Button.Style>
        <Style TargetType="Button" BasedOn="{StaticResource {x:Type Button}}">
            <Style.Triggers>
                <DataTrigger Binding="{Binding MainStatus.Restart}" Value="true">
                    <Setter Property="Background" Value="LimeGreen" />
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </Button.Style>
</Button>

现在如果我禁用按钮,按钮会变灰,因为模板。有没有办法让当前背景更“灰色”但保持基色。所以,如果按钮为绿色,颜色基本保持绿色?

2 个答案:

答案 0 :(得分:0)

您可以 设置不透明度以使其具有禁用外观 (这将保留您的背景),而不是设置背景灰色:

<ControlTemplate.Triggers>
    <Trigger Property="IsEnabled" Value="false">
        <!--<Setter TargetName="Border" Property="Background"
                    Value="{StaticResource DisabledBackgroundBrush}" />-->
        <Setter TargetName="Border" Property="Opacity" Value="0.4"/>
        <Setter TargetName="Border" Property="BorderBrush"
                Value="{StaticResource DisabledBorderBrush}" />
        <Setter Property="Foreground"
                Value="{StaticResource DisabledForegroundBrush}"/>
    </Trigger>
</ControlTemplate.Triggers>

答案 1 :(得分:0)

创建样式:

 <Style.Triggers>
        <Trigger Property="IsEnabled" Value="false">
            <Setter Property="Foreground" Value="#FFADADAD"/>
        </Trigger>
    </Style.Triggers>
相关问题