WPF-当Command.CanExecute为false时更改按钮控件模板背景

WPF-当Command.CanExecute为false时更改按钮控件模板背景,wpf,mvvm,controltemplate,Wpf,Mvvm,Controltemplate,情景: 使用按钮的默认实现时,以下功能起作用: 当CanExecute命令为true->时,按钮处于启用状态,且按钮背景未更改 当CanExecute命令为false->按钮被禁用,背景为“灰色” 但是当使用按钮控制模板样式时且CanExecute为false->按钮按预期禁用,但背景未更改。 如何更改控件模板按钮的背景 图片: 控制模板: 重新设置控件模板时,所有可视状态都应由您自己管理。在这种情况下,禁用状态将被忽略。如果IsEnabled为false,使用Trigger更改背景的简单方法

情景: 使用按钮的默认实现时,以下功能起作用:

当CanExecute命令为true->时,按钮处于启用状态,且按钮背景未更改

当CanExecute命令为false->按钮被禁用,背景为“灰色”

但是当使用按钮控制模板样式时且CanExecute为false->按钮按预期禁用,但背景未更改。

如何更改控件模板按钮的背景

图片:

控制模板:

重新设置控件模板时,所有可视状态都应由您自己管理。在这种情况下,禁用状态将被忽略。如果
IsEnabled
为false,使用
Trigger
更改背景的简单方法如下:

<ControlTemplate.Triggers>
     <Trigger Property="IsMouseOver" Value="True">
        <Setter Property="Opacity" Value="0.8" />
     </Trigger>
     <Trigger Property="IsEnabled" Value="False">
        <Setter TargetName="border" Property="Background" Value="Gray"/>
     </Trigger>         
</ControlTemplate.Triggers>

<ControlTemplate.Triggers>
     <Trigger Property="IsMouseOver" Value="True">
        <Setter Property="Opacity" Value="0.8" />
     </Trigger>
     <Trigger Property="IsEnabled" Value="False">
        <Setter TargetName="border" Property="Background" Value="Gray"/>
     </Trigger>         
</ControlTemplate.Triggers>