It seems that if I change the InputGesture on a Command, the change is not reflected in e.g. Ribbon buttons. It's really easy to reproduce, you simply need a Ribbon button with a Command and then change the InputGestures of the Command during runtime, like this:
ApplicationCommands.New.InputGestures.Clear(); ApplicationCommands.New.InputGestures.Add(new KeyGesture(Key.N, ModifierKeys.Control | ModifierKeys.Shift));
The application will respond to the new gesture, but the Ribbon button will still show the old one. I'm testing it like this:
<ribbon:PopupButton Label="Testing" Command="New"> <ribbon:Menu> <ribbon:Button Command="New" Label="Test" ribbon:Menu.IsMenuItemInputGestureTextVisible="True" /> </ribbon:Menu> </ribbon:PopupButton>
The input gesture will remain the same in both the button tooltip and the menu text.
As a side question: Why does ribbon:Menu.IsMenuItemInputGestureTextVisible default to false? I really find this odd, because why wouldn't you want to show keyboard shortcuts in most cases? Shouldn't it default to true, so I don't have to remember to turn it on for all my menu buttons? :)