The code is rather involved and contains a bunch of other stuff that I would rather not post. I hope you understand. Let me try to explain more clearly:
In my application window I have a Grid with three rows- a menu bar, a tab bar (my own implemenation- horizontal stack panel with radio buttons), and a Frame control which hosts my document control wich derives from Page. From the menus, the user has the ability to create a new tab. Each time a new tab is created, I add a button to the tab bar, and create a new document control and set the Frame controls Content property to the new document (Page control). So for every new document I create, I add a button to the tab bar, and the Frame gets another control added to its NavigationService, but only the one assigned to its Content property is visible (and as you probably know, you switch between the pages by calling the many different Navigate functions). So that is my set up. Now on to the problem. You user also has the ability to close each tab. When the user closes a tab, I remove the button from the tab bar, and I want to remove the document (Page object) from the Frame control. The problem is that Frame controls don't expose a Children property, and (from what I can tell) don't provide any way to remove a Page once it has been added (via assign the Page to the Frames Content property). There is a method called RemoveBackEntry() which I hoped would remove the last entry in the cache once I navigated away from a page, but it does not seem to do that. I call RemoveBackEntry(), then call GoBack() and the Frame displays the control that should have been removed.