WrapPanel автоматически отрегулирует свою высоту в зависимости от содержимого по умолчанию.WPF - это большой прогресс от WinForms именно благодаря новым парадигмам макета.Никакой код не требуется для всего, что вы упомянули.
Что касается 2;Есть много способов реализовать это, в зависимости от того, насколько близко вы придерживаетесь MVVM (если вообще);Сначала я бы рекомендовал использовать стилизованный TabControl (вы можете настроить стиль, чтобы визуально представить шаги мастера в виде вкладок, не позволяя пользователю переходить между вкладками), так как это проще всего.Кроме того, к TabControl можно привязать практически все.
3 возможно, но это необходимо редко.И я это имею в виду.
Теперь тогда;простой пример, чтобы показать вам силу WPF.Вы можете иметь в своей ViewModel (если вы не знакомы с MVVM, поищите его в Google или прочитайте любую статью или книгу Джоша Смита или ... вау, как много информации об этом, я нене знаю, какой выбрать) набор объектов, скажем, классы Step, которые вы можете привязать к ItemsSource элемента TabControl.TabControl автоматически создаст вкладку для каждого вашего шага.Внутри вашего класса Step вы можете иметь коллекцию элементов, скажем ... хм, Collection<Push>
(я изо всех сил стараюсь не использовать известные классы, такие как Action или Button).Если ItemTemplate TabControl содержит что-то, что распознает эту коллекцию, как в ListBox, внутренне стилизованном для использования WrapPanel для его ItemsContainer, то все готово: шаблон покажет список Pushes в WrapPanel, и это все.
Теперь, я, наверное, не должен писать здесь полное руководство в любом случае, но это должно помочь вам начать.Читайте о DataTemplates, ItemsControl и т. Д. (Опять же, у меня возникают трудности при выборе ресурсов ... Д-р. WPF имеет отличные статьи по обоим, но они могут быть немного продвинутыми), и вы должны хорошоидти.Просто помните, что есть веская причина, по которой в WPF реализовано гораздо больше гибких макетов, чем у любой предыдущей настольной технологии, вам следует ознакомиться с этим.