xaml - 如何根据绑定(bind)命令执行更改按钮背景颜色?

标签 xaml button coding-style command

我有一个 ItemTemplate,它是一个绑定(bind)在命令上的简单按钮,取决于某些属性,它可以是可执行的,也可以不是。

如果命令不可执行,我希望更改此按钮背景的颜色。
我尝试了几种方法,但无论如何我都找不到纯粹在 XAML 中执行此操作(我在学习环境中执行此操作,并且不允许使用后面的代码)。

这是我的按钮代码:

<Button x:Name="Dispo" HorizontalAlignment="Center" Margin="0" VerticalAlignment="Center" Width="30" Height="30" 
        Grid.Column="2" Grid.Row="0"
        Command="{Binding AddEmpruntCommandModel.Command}"
        CommandParameter="{Binding ElementName='flowCars', Path='SelectedItem'}"
        vm:CreateCommandBinding.Command="{Binding AddEmpruntCommandModel}" >
     <Button.Style>
        <Style TargetType="{x:Type Button}">
           <Style.Triggers>
               <Trigger Property="IsEnabled" Value="True">
                   <Setter Property="Button.Background" Value="Green"/>
               </Trigger>
               <Trigger Property="IsEnabled" Value="False">
                   <Setter Property="Button.Background" Value="Red"/>
               </Trigger>
           </Style.Triggers>
        </Style>
     </Button.Style>
  </Button>

最佳答案

您可以像这样指定自己的模板:

<Button Content="OK" Command="{Binding SomeCommand}">
    <Button.Style>
        <Style>
            <Setter Property="Button.Template">
                <Setter.Value>
                    <ControlTemplate TargetType="Button">
                        <Border x:Name="Border" Background="Green">
                            <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center" />
                        </Border>
                        <ControlTemplate.Triggers>                                        
                            <Trigger Property="IsEnabled" Value="false">
                                <Setter TargetName="Border" Property="Background" Value="Red" />
                            </Trigger>
                        </ControlTemplate.Triggers>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    </Button.Style>
</Button>

关于xaml - 如何根据绑定(bind)命令执行更改按钮背景颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2551590/

相关文章:

c# - WPF 在代码后面初始化对象并在 View 模型中使用该对象

c# - 如何将复杂的 BAML 反编译为有效的 XAML

javascript - 如何使用按钮改变javascript代码的风格?

html - <按钮> 不适用于显示 : block;

c# - 是否有人为 Lance Hunt C# 编码标准创建了自定义 StyleCop 和 FxCop 规则?

c# - 清除和重新填充绑定(bind)的组合框

wpf - 'Controls' 是未声明的前缀; XML 无效

JavaScript 按钮停止页面上的所有音频

objective-c - 如何避免部分基类中的 "incomplete implementation"警告

objective-c - 从逗号分隔文件加载类的最佳方法