未启用时更改按钮背景

Nic*_*ick 11 c# wpf button disabled-control

我只需要在Button未启用(IsEnabled == false)时更改背景(例如SolidColorBrush ).
我能怎么做?

我是否要Style使用XAML 修改Button ,还是可以通过编程方式执行此操作?什么是正确的XAML代码,仅在未启用时更改背景?

我尝试了以下XAML代码,但它没有效果:

<Button>
<Button.Style>
    <Style TargetType="Button">
        <Style.Triggers>
            <Trigger Property="IsEnabled" Value="False">
                <Setter Property="Background" Value="Red"></Setter>
            </Trigger>
        </Style.Triggers>
    </Style>
</Button.Style>
</Button>
Run Code Online (Sandbox Code Playgroud)

Eir*_*rik 7

您可以通过编辑模板来更改背景.你会在Button 这里找到默认模板.

在触发器中,IsEnabled您只需添加以下内容:

<Setter Property="Background" Value="{StaticResource DisabledBackgroundBrush}"/>
Run Code Online (Sandbox Code Playgroud)

编辑:然后尝试这个;

<Window.Resources>
    <Style TargetType="{x:Type Button}">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="Button">
                    <Border x:Name="Overlay" CornerRadius="2">
                        <ContentPresenter/>
                    </Border>
                    <ControlTemplate.Triggers>
                        <Trigger Property="IsEnabled" Value="false">
                            <Setter TargetName="Overlay" Property="Background" Value="Red"/>
                        </Trigger>
                    </ControlTemplate.Triggers>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
</Window.Resources>
<StackPanel>
    <Button Content="Button" IsEnabled="False"/>
</StackPanel>
Run Code Online (Sandbox Code Playgroud)

只需更改它以满足您的需求.


Ech*_*lon -1

您可以使用样式触发器:

<Image.Style>
    <Style>
        <Style.Triggers>
            <DataTrigger Binding="{Binding IsEnabled}" Value="False">
                <Setter Property="Image.Source" Value="pack://application:,,,/disabled.png" />
            </DataTrigger>
        </Style.Triggers>
    </Style>
</Image.Style>
Run Code Online (Sandbox Code Playgroud)

  • 为什么选择图像样式?我需要更改按钮的 SolidColorBrush。 (2认同)