WPF - 在 Command.CanExecute 为 false 时更改 Button controltemplate 背景

WPF - change Button controltemplate background when Command.CanExecute is false

场景: 使用按钮的默认实现时,以下功能有效:

当 canExeucte 命令为真时 -> 启用按钮且按钮背景不变。

当 CanExecute 命令为 false 时 -> 按钮被禁用,背景为 "grayed"。

但是当使用 Button ControlTemplate 样式并且 CanExecute 为 false -> 按钮按预期被禁用但背景没有改变。

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

图片: https://onedrive.live.com/redir?resid=3A8F69A0FB413FA4!125&authkey=!ALh_kjfxMMNzhSY&v=3&ithint=photo%2cpng

Control Template: 

 <!--button-->
    <ControlTemplate x:Key="ButtonTemplate" TargetType="{x:Type Button}">

        <Border x:Name="border" CornerRadius="0" Background="Green"  BorderBrush="#FF06A6F0"  BorderThickness="1" Opacity="1"  Width="147" Height="50" >
            <ContentPresenter x:Name="contentPresenter"  
                              ContentTemplate="{TemplateBinding ContentTemplate}" 
                              Content="{TemplateBinding Content}" 
                              HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" 
                              Margin="{TemplateBinding Padding}" 
                              VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
                              />
        </Border>

        <ControlTemplate.Triggers>
            <Trigger Property="IsMouseOver" Value="True">
                <Setter Property="Opacity" Value="0.8" />
            </Trigger>
        </ControlTemplate.Triggers>

    </ControlTemplate>
    <Style x:Key="StyleButtonTemplate" TargetType="{x:Type Button}">
        <Setter Property="Template" Value="{DynamicResource ButtonTemplate}" />
        <Setter Property="FontSize" Value="18pt" />
        <Setter Property="Foreground" Value="White" />
        <Setter Property="Cursor" Value="Hand" />
        <Setter Property="Button.Effect">
            <Setter.Value>
                <DropShadowEffect Color="Black" Direction="140" ShadowDepth="5" BlurRadius="5" Opacity="0.1" />
            </Setter.Value>
        </Setter>
    </Style>

当你重新模板化一个控件时,所有的视觉状态都应该由你自己管理。在这种情况下,禁用状态将被忽略。如果 IsEnabled 为假,使用 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>