【问题标题】:Change Button Background when is not enabled未启用时更改按钮背景
【发布时间】:2012-12-29 13:02:58
【问题描述】:

只有在未启用 (IsEnabled == false) 时,我才需要更改我的 Button 背景(例如 SolidColorBrush)。
我该怎么做?

我是否需要使用 XAML 修改按钮 Style,或者我可以通过编程方式完成这项工作吗?什么是正确的 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>

【问题讨论】:

标签: c# wpf button disabled-control


【解决方案1】:

您可以通过编辑模板来更改背景。您将找到 Button here 的默认模板。

IsEnabled 的触发器中,您可以简单地添加如下内容:

<Setter Property="Background" Value="{StaticResource DisabledBackgroundBrush}"/>

编辑: 那就试试这个吧;

<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>

只需根据您的需要进行更改即可。

【讨论】:

  • 不是默认模板。我在哪里可以找到正确的模板?
  • 您在寻找什么版本?您可以将顶部的版本更改为其他版本。
  • 我正在寻找默认版本。当我的按钮被禁用时,我只想更改背景。您提供给我的链接具有更改我的按钮默认样式的样式。自己试试吧。。
  • 我的意思是 .NET 版本。 (即 4.0 - msdn.microsoft.com/en-us/library/ms753328%28v=vs.100%29.aspx, )。试试我刚刚添加的代码,它应该可以工作。
【解决方案2】:

您可以使用样式触发器:

<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>

【讨论】:

  • 为什么选择 Image.Style?我需要更改按钮的 SolidColorBrush。
  • 使用 Button.Background 代替 Image.Source 并在 Value 中设置颜色(或特定画笔)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多