AmanVirdi
AmanVirdi

Reputation: 1685

Context menuitems are not firing Click events

I tried to open the ContextMenu on button left click not on the right clcik so I did something as below. But menu items 'All' and 'Selected' are not firing their respective events in .cs.

Xaml

<Button Content="Import" ContextMenuService.IsEnabled="false">
    <Button.Style>
        <Style TargetType="{x:Type Button}">
            <Style.Triggers>
                <EventTrigger RoutedEvent="Click">
                    <EventTrigger.Actions>
                        <BeginStoryboard>
                            <Storyboard>
                                <BooleanAnimationUsingKeyFrames Storyboard.TargetProperty="ContextMenu.IsOpen">
                                    <DiscreteBooleanKeyFrame KeyTime="0:0:0" Value="True"/>
                                </BooleanAnimationUsingKeyFrames>
                            </Storyboard>
                        </BeginStoryboard>
                    </EventTrigger.Actions>
                </EventTrigger>
            </Style.Triggers>
            <Setter Property="ContextMenu">
                <Setter.Value>
                    <ContextMenu>
                        <MenuItem Header="All"                                        
                                 Click="ImportAll_Click"/>
                        <MenuItem Header="Selected"
                                 Click="ImportSelected_Click"/>
                    </ContextMenu>
                </Setter.Value>
            </Setter>
        </Style>
    </Button.Style>
</Button>

Xaml.cs

private void ImportAll_Click(object sender, RoutedEventArgs e)
{
}

private void ImportSelected_Click(object sender, RoutedEventArgs e)
{
}

Is there something that I am missing here?

Upvotes: 0

Views: 44

Answers (1)

mm8
mm8

Reputation: 169160

Try to define the ContextMenu as a resource:

<Button Content="Import" ContextMenuService.IsEnabled="false">
    <Button.Resources>
        <ContextMenu x:Key="cm">
            <MenuItem Header="All" Click="ImportAll_Click"/>
            <MenuItem Header="Selected" Click="ImportSelected_Click"/>
        </ContextMenu>
    </Button.Resources>
    <Button.Style>
        <Style TargetType="{x:Type Button}">
            <Style.Triggers>
                <EventTrigger RoutedEvent="Click">
                    <EventTrigger.Actions>
                        <BeginStoryboard>
                            <Storyboard>
                                <BooleanAnimationUsingKeyFrames Storyboard.TargetProperty="ContextMenu.IsOpen">
                                    <DiscreteBooleanKeyFrame KeyTime="0:0:0" Value="True"/>
                                </BooleanAnimationUsingKeyFrames>
                            </Storyboard>
                        </BeginStoryboard>
                    </EventTrigger.Actions>
                </EventTrigger>
            </Style.Triggers>
            <Setter Property="ContextMenu" Value="{StaticResource cm}" />
        </Style>
    </Button.Style>
</Button>

Upvotes: 2

Related Questions