Я хочу добавить простое (по крайней мере, я думал, что это было), поведение к моему WPF TextBox
.
Когда пользователь нажимает Escape, я хочу TextBox
он редактирует, чтобы иметь текст, который это имело, когда пользователь начал редактировать, И я хочу удалить фокус из TextBox
.
У меня нет проблемы при установке текста для значения, которое это имело в начале редактирования.
Проблема состоит в том, чтобы удалить фокус элемента. Я не хочу перемещать фокус в любой другой компонент, я просто хочу TextBox
потерять фокус. У меня должен будет быть невидимый элемент для установки фокуса так мой TextBox
может потерять фокус?
К сожалению, полностью убрать фокус невозможно. Что-то в вашем окне всегда будет в центре внимания.
Код, который я использовал :
// 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);