使用表达式混合更改IsEnabled上的按钮背景

时间:2018-11-20 15:10:37

标签: wpf expression-blend

我想在WPF中更改按钮的背景颜色和路径的填充颜色。颜色值应根据Button的IsEnabled属性的当前状态进行更新。

(如果按钮被禁用,我想创建深灰色的背景颜色;如果按钮被禁用,我想将“路径”的“填充”颜色更新为浅灰色;如果按钮被启用,则“背景”和“填充”颜色应与当前颜色相同)

我知道这可以通过某些转换器来完成...。但是,仅通过使用Blend(状态和触发器),我可以更轻松地做到这一点吗?如果是这样,请让我知道如何?

1 个答案:

答案 0 :(得分:0)

如果您使用触发器要求,我已经覆盖了默认样式并将背景颜色更改为DarkGray。其余,我使用TemplateBinding

保留了相同的按钮样式
<Button x:Name="Button1" Content="Login" HorizontalAlignment="Left"  Height="31"  Margin="10,41,0,-41" Grid.Row="1"  VerticalAlignment="Top" Width="129" Click="Button_Click_1">
        <Button.Style>
            <Style TargetType="Button">
                <Style.Triggers>
                    <Trigger Property="IsEnabled" Value="False">
                        <Setter Property="OverridesDefaultStyle" Value="True" />
                        <Setter Property="Template">
                            <Setter.Value>
                                <ControlTemplate TargetType="{x:Type Button}">
                                    <Grid Background="{TemplateBinding Background}">
                                        <ContentPresenter x:Name="MyContentPresenter" 
                                                          Content="{TemplateBinding Content}"
                                                          HorizontalAlignment="Center" 
                                                          VerticalAlignment="Center" />
                                    </Grid>
                                </ControlTemplate>
                            </Setter.Value>
                        </Setter>

                        <Setter Property="Background" Value="DarkGray"></Setter>
                </Trigger>
                <Trigger Property="IsEnabled" Value="True">
                        <Setter Property="Background" Value="#FFDDDDDD"></Setter>
                </Trigger>

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