BackKeyPress and LostFocus Colliding
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....";
}
}
Technorati Tags: Windows Phone 7 Development