2015-05-28 2 views
0

Есть ли возможность принудительно ввести Enter в качестве основного ключа в определенном виде? То, что я хочу достичь, - каждый раз, когда я нажимаю клавишу «Ввод», я хочу вызвать кнопку, у которой свойство IsDefault установлено на true, независимо от того, что сфокусировано.Кнопка IsDefault для WPF - переопределение всего

+0

https://msdn.microsoft.com/en-us/library/system.windows.controls.button.isdefault(v=vs.110).aspx –

+0

@AbinMathew это не ответ на мой вопрос. Проблема в том, что когда я нажимаю кнопку1, а затем нажимаю «Ввод», моя кнопка по умолчанию не вызывается, а еще раз кнопка1 из-за фокуса. Я хочу переопределить их всех. – MistyK

+0

, если изменения фокуса затем установите фокус на кнопку по умолчанию в событии или команде click1 click. поэтому ваша кнопка по умолчанию будет работать при нажатии на вход. –

ответ

1

можно было бы, чтобы перехватить RoutedEvent, прежде чем он доберется до управления, которые пытаются реагировать на него:

Подключение к PreviewKeyDown событию, как далеко до визуального дерева, как вы хотите, чтобы поймать его. При необходимости отреагируйте на это, если нажата клавиша ввода, например. запустите тот же код, что и на вашей кнопке, а затем установите в eventargs Handled значение true.

private void previewKeyDownHandler(object sender, KeyEventArgs e) 
{ 
    if(e.Key == Key.Enter || e.Key == Key.Return) 
    { 
     e.Handled = true; 
     //Do your stuff 
    } 
} 

В Preview события являются частью системы RoutedEvent в WPF. Эти два механизма называются туннелированием и пузырьками. Here you can read more on that.

+0

Это точно я упомянул в своем предыдущем комментарии, но спасибо за ответ в любом случае :) – MistyK

+0

Извините, не расширил комментарии и пропустил поэтому ваш - это решение только пришло мне в голову, и никто еще не отправил ответ. Рад, что у вас есть что-то работоспособное, хотя :-) –

Смежные вопросы