2009-10-22 2 views
0

Можно ли добавить триггер стиля в WPF к кнопке, чтобы определить, открылся ли ContextMenu?Стиль кнопки WPF правой кнопкой мыши

Если это так, я хотел бы покрасить фон соответствующей кнопки, если контекстное меню открыто.

Не можете найти регулярный способ сделать это ...

ответ

1

Вот решение:

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