Hvis man i WPF benytter binding mellem en textbox og en property på en bagvedliggende viewmodel, vil der som standard først ske opdatering af viewmodellen, når textboxen mister fokus.  I WPF kan man ændre dette ved at sætte UpdateSourceTrigger til PropertyChanged i sin binding.  Med PropertyChanged sker bliver viewmodel opdateret, når teksten i textboxen ændrer sig.

PropertyChanged findes desværre ikke Windows Phone.  Ofte er det ikke et problem, da man som regel har en knap, man skal trykke på for at gemme det indtastede.  Men noget der ligner en bug i Windows Phone gør, at knapper i app bar ikke flytter fokus fra textboxe på skærmen.

Et workaround er følgende kode, der opdaterer binding på den textbox, der har fokus.  Jeg synes ikke, det er kønt, men jeg har ikke fundet nogen løsning, der er mindre hack-ish:

    public static void UpdateBinding()
    {
        object focusObj = FocusManager.GetFocusedElement();
        if (focusObj != null)
        {
            if (focusObj is TextBox)
            {
                var binding = (focusObj as TextBox).GetBindingExpression(TextBox.TextProperty);
                binding.UpdateSource();
            }
        }
    }
Kommentarerne er lukkede