Windows Phone y enlaces bidireccionales y pérdida de foco

En Windows Phone a los enlaces bidireccionales existe solo dos formas de actualizar la fuente: Default y Explicit

Aquí tienes la información del MSDN : UpdateSourceTrigger Enumeration

En realidad no hay ningún problema ya que el perder el foco ya funciona correctamente. Lo que pasa es que en Windows Phone la application bar no genera perdida de foco y en el caso de que estuvieses escribiendo en un textbox el cambio no se propaga a la fuente.

Así, se puede dar el caso siguiente:

Tienes una página donde se pide escribir un texto y en la application bar un botón que al pulsar usa este texto para consultar. Lo que el usuario hará será pulsar en textbox, luego le aparece el teclado del Windows Phone, escribe y luego pulsa directamente en el botón de la application bar.

El comando se ejecuta pero la propiedad enlazada al textbox no se actualiza porque no ha habido perdida de foco.

Así que lo que tenemos que hacer es provocar nosotros mismos que se actualice. Esto es lo que escribiremos en el método Click del botón de la application bar.

object focusObj = FocusManager.GetFocusedElement();
if (focusObj != null && focusObj is TextBox)
{
var binding = (focusObj as TextBox).GetBindingExpression(TextBox.TextProperty);
  binding.UpdateSource();
}

Más información:

TextBox Binding TwoWay Doesn’t Update Until Focus Lost WP7

Anuncis