2015-07-22 2 views
1

Я попытался следующие:Установить фокус на другой элемент с событием кнопки по умолчанию?

<Button IsDefault="True" Content="Process Test File" 
     FocusManager.FocusedElement="{Binding ElementName=txtClientId}" 
     Command="{Binding ProcessFileCommand, UpdateSourceTrigger=PropertyChanged}"> 
</Button> 

У меня есть кнопка установки по умолчанию. Таким образом, когда пользователь нажимает клавишу ввода, он обрабатывает команду, но не задает фокус, как заданный. Однако при нажатии с помощью мыши он устанавливает фокус. Я уверен, что есть простой способ заставить фокус настройки работать с действием по умолчанию.

+0

Обычно 'FocusManager.FocusedElement' только получает«срабатывает», когда элементы управления загружаются ... Дело в том, что он также делает что-то, когда Кнопка нажата, это озадачивает, но я, конечно, не ожидал, что она будет работать в любом другом случае. – almulo

ответ

1

Выполнение фокусировки в событии Click кнопки. Он будет вызван, когда вы нажмете Enter.

<Button IsDefault="True" Content="Process Test File" 
     Command="{Binding ProcessFileCommand, UpdateSourceTrigger=PropertyChanged}" 
     Click="Button_Click"> 
</Button> 

Затем в коде-за:

private void Button_Click(object sender, RoutedEventArgs e) 
{ 
    Keyboard.Focus(txtClientId); 
} 
+1

Я надеялся, что вокруг этого есть способ. Я предполагаю, что это не будет точно разрушать MVVM, так как я не использую код для какой-либо виртуальной машины или данных. – phillk6751

+0

Это не сломает MVVM, и единственное, что я могу думать о том, что такое отсутствие кода, - это создание поведения с прикрепленным свойством и все такое ... Что для вас немного похоже на излишество (но если вы 'Заинтересованы в этом, мы могли бы изучить его) – almulo

+1

http://stackoverflow.com/a/31483731/2470362 –

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