0

I have MenuItem List and using the ApplicationCommnds like cut,copy,paste.I want to do some thing when Command is disable.But style not working on it.Default behaviour of ApplicationCommand is ii automatically set the foregroud grey if it disable.But it not working in my case.So i explicitly try to set it.

<TextBox x:Name="AssignmentTextBox" >
    <TextBox.ContextMenu>
        <ContextMenu Background="White">
            <MenuItem Command="ApplicationCommands.Undo" Style="StaticResource _MenuItem}"/>                                 
            <Separator />
            <MenuItem Command="ApplicationCommands.Cut"   Style="{StaticResource _MenuItem}"/>
            <MenuItem Command="ApplicationCommands.Copy"  Style="{StaticResource _MenuItem}" />
            <MenuItem Command="ApplicationCommands.Paste"  Style="{StaticResource _MenuItem}"/>                                    
            <Separator  />
            <MenuItem Command="ApplicationCommands.SelectAll"  Style="{StaticResource _MenuItem}"/>
        </ContextMenu>
    </TextBox.ContextMenu>
</TextBox>
4

2 回答 2

1

知道了。您在为第一个 MenuItem 设置 Style 属性的值时错过了括号{ 。

怎么了

<MenuItem Command="ApplicationCommands.Undo" Style="StaticResource _MenuItem}"/> 

什么是对的

<MenuItem Command="ApplicationCommands.Undo" Style="{StaticResource _MenuItem}"/> 

[已编辑]在下面的测试用例中,启用的 MenuItems 将为绿色,禁用的 MenuItems 将为红色。希望这将帮助您解决您的问题

<ContextMenu Background="White">
       <ContextMenu.Resources>
            <Style x:Key="_MenuItem1" TargetType="{x:Type MenuItem}">
                   <Style.Triggers>
                          <DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=Self}, Path=IsEnabled}" Value="false">
                              <Setter Property="Foreground" Value="Red"/>
                          </DataTrigger>
                          <DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=Self}, Path=IsEnabled}" Value="True">
                              <Setter Property="Foreground" Value="Green"/>
                          </DataTrigger>
                    </Style.Triggers>
            </Style>
      </ContextMenu.Resources>
      <MenuItem Command="ApplicationCommands.Undo" Style="{StaticResource _MenuItem1}"/>
      <Separator />
      <MenuItem Command="ApplicationCommands.Cut"   Style="{StaticResource _MenuItem1}"/>
      <MenuItem Command="ApplicationCommands.Copy"  Style="{StaticResource _MenuItem1}" />
      <MenuItem Command="ApplicationCommands.Paste"  Style="{StaticResource _MenuItem1}"/>
      <Separator  />
      <MenuItem Command="ApplicationCommands.SelectAll"  Style="{StaticResource _MenuItem1}"/>
  </ContextMenu>

截屏

在此处输入图像描述

于 2013-02-07T13:58:22.510 回答
0

似乎您已经更改了 MenuItem 模板或覆盖了前景,因此 CommandCan 执行无法更新正确的视觉元素以呈现为“禁用”,应该是灰色。

所以我想知道您是否可以使用键 _MenuItem 向我们展示模板或您的样式,也许我们可以判断您的情况出了什么问题。

于 2013-02-08T09:47:51.777 回答