简体   繁体   中英

Enabling/disabling menu items - Expression Blend

I need to disable a particular menuitem when it is clicked. How can I write the code for this within the event handler?

Codebehind event handler:

private void MenuItem_Click(object sender, RoutedEventArgs e)
{
   ((MenuItem)sender).IsEnabled = false;
}

"sender" is the item clicked, we need to cast it to MenuItem to be able to set its IsEnabled property.

Here's how to wire up the event handler in your xaml: In WPF how to add menu item event?

You can do it from the code behind or use an event trigger (which is usually my preferred option for very simple tasks, as you can define them as a resource and reuse).

Code Behind Answer:

<MenuItem Header="Click Me" Click="MenuItem_Click">

private void MenuItem_Click(object sender, RoutedEventArgs e)
{
   var menuItem = sender as MenuItem;
   if (menuItem != null) menuItem.IsEnabled = false;
}

XAML Only Answer:

<MenuItem Header="Click Me">
    <MenuItem.Triggers>
        <EventTrigger RoutedEvent="MenuItem.Click">
            <BeginStoryboard>
                <Storyboard>
                    <BooleanAnimationUsingKeyFrames Storyboard.TargetProperty="(MenuItem.IsEnabled)">
                        <DiscreteBooleanKeyFrame KeyTime="0" Value="False" />
                    </BooleanAnimationUsingKeyFrames>
                </Storyboard>
            </BeginStoryboard>
        </EventTrigger>
    </MenuItem.Triggers>
</MenuItem>

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM