When using textbox.Undo(); I get the following error:
Cannot Undo or Redo while undo unit is open.
Now I understand why this is
Call the undo asynchronously from the From the TextChanged event handler:
Dispatcher.BeginInvoke(new Action(() => tb.Undo()))