Проблемы связывания ключей в MenuItem с IsCheckable = "True", почему? - PullRequest
0 голосов
/ 23 ноября 2010

Этот MenuItem не переключается на проверенный, когда я нажимаю 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 ]

0 голосов
/ 23 ноября 2010

Я думаю, что нашел:

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

Примечания

Это свойство не связывает жест ввода с элементом меню, к которому он просто добавляет текстпункт меню.Для получения информации о том, как связать команду с пунктом меню, см .: Команда.

0 голосов
/ 23 ноября 2010

Трюк "_" должен работать с видимыми элементами меню.В этом случае мне придется сначала выполнить Alt-O, чтобы открыть подменю «_Other», а затем нажать S, чтобы выбрать пункт « Показать расширенные имена?».Полагаю, мораль этого в том, что использование "" - это не то же самое, что добавление привязки ключа к самой команде!

0 голосов
/ 23 ноября 2010

вам нужно сделать ShowExpandedName как dependencyProperty, чтобы об изменении его значения сообщалось в menuItem

см. Там:

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...