代码之家  ›  专栏  ›  技术社区  ›  Nestor

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

wpf
  •  0
  • Nestor  · 技术社区  · 14 年前

    当我按Alt+S时,此菜单项不会切换为选中,为什么?

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

    注意:ShowExpandedName在DataContext中定义如下。当我用鼠标单击菜单项时,菜单项被正确检查。

    bool _ShowExpandedName;
    public bool ShowExpandedName
    {
         get { return _ShowExpandedName; }
         set
              {
                  if (value != _ShowExpandedName)
                  {
                      _ShowExpandedName = value;
                      this.NotifyPropertyChanged("ShowExpandedName");
                  }
              }
    }
    
    3 回复  |  直到 14 年前
        1
  •  0
  •   David    14 年前

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

    请看:

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

        2
  •  0
  •   David    14 年前

    我想我发现:

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

    笔记

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

        3
  •  0
  •   Nestor    14 年前

    “_u”技巧应该适用于可见的菜单项。在这种情况下,我必须先执行Alt-O以打开“其他”子菜单,然后按S选择项目 是否显示扩展名?“. 我想这样做的寓意是 “这与向命令本身添加密钥绑定不同!