I want to add a simple (at least I thought it was) behaviour to my WPF TextBox
.
When the user presses Escape I want the TextBox
he is editing to have the text it had when the user started editing, AND I want to remove the focus from the TextBox
.
I don't have any problem setting the text for the value it had in the beginning of the edit.
The problem is to remove the focus of the element. I don't want to move the focus to any other component, I just want the TextBox
to lose focus. Will I have to have an invisible element to set the focus so my TextBox
can lose focus?
A bit late to the party, but it was helpful to me so here it goes.
Since .Net 3.0,
FrameworkElement
has a MoveFocus function which did the trick for me.AFAIK, it is not possible to completely remove the focus. Something in your Window will always have the focus.
in .NET Framework 4 just
Keyboard.ClearFocus();
In Windows Phone Development, I just did
Focus()
orthis.Focus()
in the PhoneApplicationPage and it worked like a charm.The code I have been using :
You can set the focus to a focusable ancestor. This code will work even if the textbox is inside a template with no focusable ancestors inside that same template: