2010-03-31 8 views
4

J'ai un ItemTemplate dans lequel est un simple bouton lié à une commande, qui peut être exécutable ou non en fonction de certaines propriétés.Comment changer la couleur d'arrière-plan du bouton en fonction de la commande liée canexecute?

J'aimerais que la couleur de l'arrière-plan de ce bouton change si la commande n'est pas exécutable. J'ai essayé plusieurs méthodes, mais je ne trouve pas de toute façon de le faire purement en XAML (je le fais dans un contexte d'étude, et le code derrière n'est pas autorisé).

Voici mon code pour le bouton:

<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> 

Répondre

0

Vous pouvez spécifier votre propre modèle comme ça:

<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> 
Questions connexes