WPF: Как программно удалить фокус из TextBox

Я хочу добавить простое (по крайней мере, я думал, что это было), поведение к моему WPF TextBox.

Когда пользователь нажимает Escape, я хочу TextBox он редактирует, чтобы иметь текст, который это имело, когда пользователь начал редактировать, И я хочу удалить фокус из TextBox.

У меня нет проблемы при установке текста для значения, которое это имело в начале редактирования.

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

86
задан jpsstavares 26 May 2010 в 15:41
поделиться

2 ответа

К сожалению, полностью убрать фокус невозможно. Что-то в вашем окне всегда будет в центре внимания.

6
ответ дан 24 November 2019 в 07:58
поделиться

Код, который я использовал :

// Move to a parent that can take focus
FrameworkElement parent = (FrameworkElement)textBox.Parent;
while (parent != null && parent is IInputElement && !((IInputElement)parent).Focusable)
{
    parent = (FrameworkElement)parent.Parent;
}

DependencyObject scope = FocusManager.GetFocusScope(textBox);
FocusManager.SetFocusedElement(scope, parent as IInputElement);
52
ответ дан 24 November 2019 в 07:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: