private void OnKeyDown(object sender, KeyEventArgs e)
{
if (_commandManager.IsKeyboardEventsSuspended)
{
return;
}
if (e.Handled)
{
// Don't get in the way of already handled KeyDown events
return;
}
// TODO: consider caching or something like that
var commandNames = _commandManager.GetCommands();
foreach (var commandName in commandNames)
{
bool keyHandled = false;
var inputGesture = _commandManager.GetInputGesture(commandName);
if (inputGesture != null)
{
if (inputGesture.Matches(e))
{
keyHandled = true;
_commandManager.ExecuteCommand(commandName);
break;
}
}
if (keyHandled)
{
e.Handled = true;
}
}
}
}