简体   繁体   English

启用/禁用菜单项-Expression Blend

[英]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. “发送者”是单击的项目,我们需要将其强制转换为MenuItem才能设置其IsEnabled属性。

Here's how to wire up the event handler in your xaml: In WPF how to add menu item event? 这是在xaml中连接事件处理程序的方法: 在WPF中,如何添加菜单项事件?

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: 仅XAML答案:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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