I’m working on a Windows Phone 7 app and ran into an issue that I just couldn’t figure out. I was trapping the LostFocus event on a TextBox and finding that by handling the LostFocus event I was losing the case where the user hit the Back Key since that actually triggered the LostFocus event event first. Peter Torr came to rescue with a code snippet that allowed me to handle that special case. I’m posting here so others can benefit.
In my case all I needed was the ability to figure out if the reason the control lost focus was the result of a Back Key press. The code snippet below also provides for other scenarios like the user tapped outside the textbox or on another control.
private void textbox_LostFocus(object sender, RoutedEventArgs e) { object focusedElement = FocusManager.GetFocusedElement(); if (focusedElement == null) { whoHasFocus.Text = "User tapped outside of textbox"; } else if (focusedElement == this) { whoHasFocus.Text = "SIP Dismissed"; } else if (focusedElement is FrameworkElement) { whoHasFocus.Text = (focusedElement as FrameworkElement).Name + " has focus"; } else { whoHasFocus.Text = "Magic 8-ball says...."; } }