Стиль кнопки WPF по щелчку правой кнопкой мыши - PullRequest
1 голос
/ 22 октября 2009

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

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

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

1 Ответ

1 голос
/ 22 октября 2009

Вот решение:

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