禁用按钮不会更改WPF

时间:2016-06-28 03:01:53

标签: wpf xaml button binding styles

我有以下代码,我试图在禁用时更改按钮的背景颜色。但它仍然保持与启用时相同的背景颜色。虽然按钮确实被禁用,但它没有改变。任何帮助将不胜感激。

 <Button  Content="Install" Command="{Binding InstallCommand}"  Margin="150,30,30,22" Width="118" FontSize="18" FontWeight="Bold" FontFamily="Segoe UI Light" FontStretch="ExtraExpanded">
                <Button.Style>
                    <Style TargetType="Button">
                        <Setter Property="IsEnabled" Value="True" />
                        <Setter Property="OverridesDefaultStyle" Value="True"/>
                        <Setter Property="Foreground" Value="White"/>
                        <Setter Property="Background" Value="#FF4F4F4F"/>
                        <Setter Property="Template">
                            <Setter.Value>
                                <ControlTemplate TargetType="Button">
                                    <Border Name="border" 
                        BorderThickness="1"                                  
                        Background="{TemplateBinding Background}">
                                        <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center" />
                                    </Border>
                                    <ControlTemplate.Triggers>
                                        <Trigger Property="IsMouseOver" Value="True">
                                            <Setter TargetName="border" Property="BorderBrush" Value="Black" />
                                            <Setter Property="Foreground" Value="White"/>
                                            <Setter Property="Background" Value="Goldenrod"/>
                                        </Trigger>
                                    </ControlTemplate.Triggers>
                                </ControlTemplate>
                            </Setter.Value>
                        </Setter>
                        <Style.Triggers>
                            <DataTrigger Binding="{Binding InstallEnabled, Converter={StaticResource BooleanToVisibilityConverter}}" Value="">
                                <Setter Property="IsEnabled" Value="False" />
                                <Setter Property="Background" Value="{DynamicResource windowBGBrushBusinessDateChanged}"/>
                            </DataTrigger>
                        </Style.Triggers>

                    </Style>
                </Button.Style>
            </Button>

2 个答案:

答案 0 :(得分:2)

我发现在触发器中你没有检查值。更改你的触发器如下。

 <Style.Triggers>
      <DataTrigger Binding="{Binding InstallEnabled, Converter={StaticResource BooleanToVisibilityConverter}}" Value="False">
    <Setter Property="IsEnabled" Value="False" />
 <Setter Property="Background" Value="{DynamicResource windowBGBrushBusinessDateChanged}"/>
 </DataTrigger>
</Style.Triggers>

答案 1 :(得分:1)

您可以通过更改按钮的控件模板来更改禁用的按钮背景,如下所示

   <Window.Resources>

    <Style x:Key="MyButton2" TargetType="Button">
        <Setter Property="OverridesDefaultStyle" Value="True" />
        <Setter Property="Background" Value="MediumAquamarine" />
        <Setter Property="Foreground" Value="MediumBlue" />

        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type Button}">
                    <Grid Background="{TemplateBinding Background}">
                        <ContentPresenter x:Name="MyContentPresenter"
                                          HorizontalAlignment="Center"
                                          VerticalAlignment="Center"
                                          Content="{TemplateBinding Content}" />
                    </Grid>
                </ControlTemplate>
            </Setter.Value>
        </Setter>

        <Style.Triggers>
            <Trigger Property="IsEnabled" Value="False">
                <Setter Property="Background" Value="Green" />
                <Setter Property="Foreground" Value="DeepPink" />
            </Trigger>
        </Style.Triggers>
    </Style>


</Window.Resources>
<Grid>

    <Button x:Name="disabledButton"
            Width="100"
            Height="100"
            Content="Button State"
            IsEnabled="False"
            Style="{StaticResource MyButton2}" />


</Grid>