I got here from the blog post talking about using this type of framework with SterlingDB (but I don't think that code is present here).
Maybe I am missing something in the code here, but the it looks to me like the ActivatePage is ALWAYS called. The comments say when a page is tombstoned or activated, but they are actually always called.
So if you are navigating around within your own app you are still only ever going to store one page state, the last one. What happens when the user then hits back and goes to the previous page within your app? There is no pagestate for it.