2009-10-22 117 views
0

是否可以在WPF中将样式触发器添加到Button以确定ContextMenu是否已打开?在右键单击样式WPF按钮

如果是这样,我想打开contextmenu打开相应的按钮的背景。

找不到正规的方式来做到这一点...

回答

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>