Используйте ChildWindow в качестве родительского окна. Затем создайте несколько UserControls, которые будут помещены в содержимое родительского окна. В исходном коде родительского окна загрузите элементы управления пользователя в список и установите видимость «Свернутый» для всех из них, но первый. Когда пользователь нажимает кнопки Next/Prev, вытащите соответствующий UserControl из списка (следите за текущим индексом) и сделайте его «Видимым», в то время как текущий элемент управления «Collapsed».
Весь ваш навигационный код будет находиться в родительском окне, но родительское окно не будет касаться содержимого самих шагов мастера.
Каждый UserControl может быть закодирован в XAML как отдельный элемент управления, поэтому вы все равно сохраняете разделение элемента управления от логики навигации мастеров.
Затем вы можете создать тип класса, который будет содержать все параметры для различных элементов управления мастером. Передайте ссылку на экземпляр объекта на каждый из элементов управления для их обновления. Когда вы дойдете до конца мастера, ваш объект опции должен поддерживать состояние всех шагов мастера, а родительское окно может вернуть это приложение.