void ShowElement(ContentControl elementHolder, object element) { elementHolder.Content = null; Type elementType = element.GetType(); if ((elementType == typeof(ToolTip)) || (elementType == typeof(Window))) { // can't be set as a child, but don't need to be shown, so do nothing } else if (elementType == typeof(NavigationWindow)) { NavigationWindow wnd = (NavigationWindow)element; wnd.WindowState = WindowState.Minimized; wnd.ShowInTaskbar = false; wnd.Show(); // needs to be shown once to "hydrate" the template wnd.Hide(); } else if (typeof(ContextMenu).IsAssignableFrom(elementType)) { elementHolder.ContextMenu = (ContextMenu)element; } else if (typeof(Page).IsAssignableFrom(elementType)) { Frame frame = new Frame(); frame.Content = element; elementHolder.Content = frame; } else { elementHolder.Content = element; } }