Over a million developers have joined DZone.

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 }}