В моем приложении WPF у меня есть текстовое поле управления.Элемент управления текстового поля находится в UserControl, который, в свою очередь, имеет класс View Model.В моем классе VM у меня есть команда, которая выполняется либо при нажатии кнопки в UserControl, либо при нажатии клавиши Enter.Моя проблема в том, что когда я нажимаю Enter, текстовое поле теряет фокус, и мне приходится нажимать на текстовое поле, чтобы снова сфокусировать его.Что можно сделать, чтобы текстовое поле сохраняло фокус при нажатии клавиши?
Я пытаюсь сделать набросок того, что я сейчас использую:
<Window>
<uc:DesignPanel ... />
<uc:CommandPrompt ... />
</Window>
<UserControl Name=CommandPrompt ...>
<StackPanel>
<TextBox Name="tb_commands" />
<Button Name="btn_process" FocusManager.FocusedElement="{Binding ElementName=tb_commands}" />
</StackPanel>
</UserControl>
Пользовательский элемент управления DesignPanelв свою очередь содержит другие пользовательские элементы управления (UCOperands).UCOperand в основном выглядит следующим образом:
<UserControl Name="UCOperand" Focusable="true">
<UserControl.InputBindings ... />
</UserControl>
Обратите внимание, что я установил Focusable = "true" в UCOperand, это необходимо, потому что в противном случае пользователь не может вызывать команды ввода, определенные в этом элементе управления.Если я удаляю это свойство или устанавливаю его в false, то все работает так, как я ожидаю, например, когда я нажимаю Enter, когда я редактирую текстовое поле «tb_commands» или нажимаю кнопку «btn_process», фокус остается на текстовом поле,Но, как и сейчас, всякий раз, когда вы нажимаете Enter или нажимаете на кнопку, tb_commands теряет фокус.
Заранее спасибо.