2009-10-22 5 views
0

Est-il possible d'ajouter un déclencheur de style dans WPF à un bouton pour déterminer si le menu contextuel a ouvert ou non?Style un bouton WPF sur le clic droit de la souris

Si oui, j'aimerais colorer l'arrière-plan du bouton correspondant si le menu contextuel est ouvert.

Vous ne trouvez pas une façon régulière pour le faire ...

Répondre

1

Voici une solution:

<Grid ShowGridLines="True"> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="Auto" /> 
    </Grid.RowDefinitions> 
    <Button Grid.Column="1" Margin="5" Content="Button" x:Name="theButton"> 
     <Button.Background> 
      <SolidColorBrush x:Name="BackgroundBrush" Color="LightGray" /> 
     </Button.Background> 
     <Button.ContextMenu> 
      <ContextMenu x:Name="contextMenu"> 
       <MenuItem Header="Option 1" /> 
       <MenuItem Header="Option 2" /> 
      </ContextMenu> 
     </Button.ContextMenu> 
     <Button.Triggers> 
      <!-- This changed the color to red when the context menu is openning --> 
      <EventTrigger RoutedEvent="Button.ContextMenuOpening"> 
       <BeginStoryboard> 
        <Storyboard> 
         <ColorAnimation Storyboard.TargetName="BackgroundBrush" 
             Storyboard.TargetProperty="Color" Duration="0:0:0" To="Red" /> 
        </Storyboard> 
       </BeginStoryboard> 
      </EventTrigger> 
      <!-- This changed the color back to light gray when the context menu is closing --> 
      <EventTrigger RoutedEvent="Button.ContextMenuClosing"> 
       <BeginStoryboard> 
        <Storyboard> 
         <ColorAnimation Storyboard.TargetName="BackgroundBrush" 
             Storyboard.TargetProperty="Color" Duration="0:0:0" To="LightGray" /> 
        </Storyboard> 
       </BeginStoryboard> 
      </EventTrigger> 
     </Button.Triggers> 
    </Button> 
</Grid> 
Questions connexes