在使用IsCheckable =“True”的MenuItem中绑定键时出现问题,为什么?

时间:2010-11-23 13:23:49

标签: wpf

当我按下Alt + S时,这个MenuItem不会切换到检查,为什么?

<Menu>
   <MenuItem Header="_Other">
      <MenuItem
          Header="_Show Expanded Names ?"
          IsCheckable="True"
          StaysOpenOnClick="True"
          InputGestureText="Alt+S"
          IsChecked="{Binding ShowExpandedName}" />
   </MenuItem>
</Menu>

注意:ShowExpandedName在DataContext中定义如下。当我用鼠标点击它时,会正确检查MenuItem。

bool _ShowExpandedName;
public bool ShowExpandedName
{
     get { return _ShowExpandedName; }
     set
          {
              if (value != _ShowExpandedName)
              {
                  _ShowExpandedName = value;
                  this.NotifyPropertyChanged("ShowExpandedName");
              }
          }
}

3 个答案:

答案 0 :(得分:0)

您需要将ShowExpandedName设为dependencyProperty,以便将其值的更改报告给menuItem

看那里:

http://msdn.microsoft.com/en-us/library/system.windows.dependencyproperty.aspx

答案 1 :(得分:0)

我想我找到了:

http://msdn.microsoft.com/en-en/library/system.windows.controls.menuitem.inputgesturetext%28VS.85%29.aspx

  

注释

     

此属性不会将输入手势与菜单项相关联,只是将文本添加到菜单项。有关如何将命令与菜单项关联的信息,请参阅:命令。

答案 2 :(得分:0)

“_”技巧应该适用于可见的菜单项。在这种情况下,我必须首先打开Alt-O打开“_Other”子菜单,然后按S选择项目“显示扩展名称?”。 我想这样做的道理是使用“”与向命令本身添加键绑定不同!