2013-05-28 5 views
0

J'ai un Grid que j'utilise essentiellement comme un bouton dont j'ai besoin de changer le dégradé de couleur du fond vers un autre dégradé lorsque le bouton de la souris est enfoncé. Lorsque le bouton de la souris est relâché, revenez à la couleur d'origine. De plus, je devrai aussi effectuer une action. J'essaye d'accomplir ceci dans le code derrière mais peut-être ceci peut être fait dans le xaml? Je vais à ce sujet comme la personnalisation d'un bouton à l'aspect et la sensation dont j'avais besoin s'avérait être plus difficile. Comment puis-je m'y prendre?WPF - Changer la couleur de la grille arrière sur MouseLeftButtonDown

XAML:

<DockPanel LastChildFill="True" Width="40" Height="40" Margin="22,20,22,5"> 
    <Border BorderThickness="0,1,0,0" DockPanel.Dock="Top" BorderBrush ="#747474" /> 
    <Border BorderThickness="1,0,0,0" DockPanel.Dock="Left"> 
     <Border.BorderBrush> 
      <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0"> 
       <GradientStop Color="#747474" Offset="0"/> 
       <GradientStop Color="#464648" Offset="1"/> 
      </LinearGradientBrush> 
     </Border.BorderBrush> 
    </Border> 
    <Border BorderThickness="0,0,1,0" DockPanel.Dock="Right"> 
     <Border.BorderBrush> 
      <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0"> 
       <GradientStop Color="#747474" Offset="0"/> 
       <GradientStop Color="#464648" Offset="1"/> 
      </LinearGradientBrush> 
     </Border.BorderBrush> 
    </Border> 
    <Border BorderThickness="0,1,0,0" DockPanel.Dock="Bottom" BorderBrush ="#464648" /> 
    <Grid Width="38" Height="38"> 
     <Grid.Background> 
      <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0"> 
       <GradientStop Color="#585858" Offset="0"/> 
       <GradientStop Color="#464648" Offset="1"/> 
      </LinearGradientBrush> 
     </Grid.Background> 
     <Image HorizontalAlignment="Center" VerticalAlignment="Center" Source="/common/printer_20.png" Stretch="None" /> 
    </Grid> 

Répondre

1

Vous avez plusieurs façons d'y parvenir.

  1. Utilisez un Style et des états visuels. Problème: Il serait sale d'exécuter une commande. Ajouter un Behavior au Grid. Affectez les événements de la souris et modifiez Background dans le code. De plus, vous pouvez exécuter une commande. Utilisez un Trigger pour changer l'arrière-plan. Utilisez MVVM Light pour exécuter un Command.

De quelle façon préférez-vous?

Questions connexes