启用/禁用菜单项 - Expression Blend

时间:2015-04-15 08:20:06

标签: c# wpf xaml expression-blend

我需要在单击时禁用特定的menuitem。如何在事件处理程序中为此编写代码?

2 个答案:

答案 0 :(得分:1)

Codebehind事件处理程序:

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

“sender”是单击的项目,我们需要将其强制转换为MenuItem才能设置其IsEnabled属性。

以下是如何在xaml中连接事件处理程序: In WPF how to add menu item event?

答案 1 :(得分:0)

您可以从后面的代码中执行此操作或使用事件触发器(对于非常简单的任务,这通常是我的首选选项,因为您可以将它们定义为资源并重用)。

答案背后的代码:

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

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