UndoRedo For NTK 1.0b4 Demonstrates how to add undo, and then redo, within NTK. The goal is to change the Undo behavior so that you get Undo/Redo instead of the ÒnormalÓ two levels of Undo. Please note that this is a major kludge, and not at all endorsed by the UI team. Some interesting points: You cannot call AddUndoAction() within a method that is being called as part of an undo. It seems like it should work, but your added action gets dropped into never never land and may even result in a memory leak. DONÕT DO THIS! Instead, you can use AddDeferedAction() [Which is itself broken, see the Q&A and/or the docs on this] to have AddUndoAction called a little later. There are problems with this approach. Because of the way AddDeferredAction is implemented, your added action might be called after some user events. (I.e. if the user taps the undo button twice really quickly, the second undo will come in before your added action which, well, produces unexpected results.) Also, this approach doesnÕt generalize well. Many system protos use AddUndoAction themselves, which may mean that another level of undo has gotten in between your expected Undo/Redo ÒloopÓ and the user. This ends up being really confusing. From a UI standpoint, Undo/Redo is preferred to two levels of Undo, but because the two level undo is implemented in all the system apps, and probably in other 3rd party apps as well, you will have to be VERY careful to properly manage user expectations if you choose to implement undo/redo.