Behavior to Force TextBox Model Update to Prevent Trouble with the ApplicationBar

DZone 's Guide to

Behavior to Force TextBox Model Update to Prevent Trouble with the ApplicationBar

· Mobile Zone ·
Free Resource

A small quicky this time:


  • TextBox, Text property bound to a string in my ViewModel
  • I type text in the TextBox
  • I click a “Save” button on my ApplicationBar
  • The string in my ViewModel is not updated. It never gets updated. WTF???

It appears the TextBox only updates it’s value to a bound string when it loses focus. And a TextBox does not lose focus when you click an ApplicationBar Button. Meh.

I have found a few solutions and workarounds, and in the end rolled my own:  a very small behavior that updates the binding every time you type something in your textbox. That’s a bit wasteful, but it works for me. It builds on the SafeBehavior pattern I wrote about earlier, and it’s so small I post it in one go:

using System.Windows.Controls;

namespace Wp7nl.Behaviors
  /// <summary>
  /// A behavior to for text box model update when text changes
  /// </summary>
  public class TextBoxChangeModelUpdateBehavior : SafeBehavior<TextBox>
    protected override void OnSetup()
      AssociatedObject.TextChanged += AssociatedObjectTextChanged;

    protected override void OnCleanup()
      AssociatedObject.TextChanged -= AssociatedObjectTextChanged;

    void AssociatedObjectTextChanged(object sender, TextChangedEventArgs e)
      var binding = AssociatedObject.GetBindingExpression(TextBox.TextProperty);
      if (binding != null)

I have read amongst other things Prism has a UpdateTextBindingOnPropertyChanged behavior. Well this one will be in the next version of my #wp7nl library on codeplex


Published at DZone with permission of

Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}