Просто чтобы принять это во внимание, оба решения, основанные на TabControl
и Frame
, чем-то похожи на крайности спектра.Элемент управления вкладкой создает очень тесную связь между состоянием вкладки и отображаемым пользовательским интерфейсом (например, вам может быть трудно перейти в диалог, для которого нет явного элемента вкладки), тогда как фрейм обеспечивает относительно слабую связь, но может бытьизлишним для этого сценария, так как он направлен на поддержку полноценной линейной навигации со стеком истории / страниц.(Например, Prism предлагает аналогичный механизм благодаря своей концепции «регионов».)
Средой может быть основной пользовательский интерфейс «оконная рама» с элементом-заполнителем и ваши отдельные «страницы»производные от UserControl
, что делает их обычными элементами пользовательского интерфейса.Чтобы переключиться на определенную страницу в вашем пользовательском интерфейсе, необходимо создать (посредством кода или ресурсов XAML) соответствующий пользовательский элемент управления и установить его в качестве свойства Content
вышеупомянутого элемента-заполнителя.(По сути, это тот же механизм, который вы упомянули для VB, где вы скрываете / отображаете подчиненные формы.)
Таким образом, есть ряд вариантов на выбор, в зависимости от реальных ограничений вашего сценария.