Разработка интерфейса пользователя - WPF - PullRequest
9 голосов
/ 27 января 2010

Все в WPF:

При разработке приложения-мастера пользователь должен ответить на ряд простых вопросов, прежде чем перейти к основному приложению. Основное приложение затем заполняется информацией, полученной от мастера.

Я начал с окна, в которое затем планировал добавить пользовательские элементы управления. В главном окне пользовательский элемент управления будет находиться в первом ряду, а затем кнопки «Далее» и «Предыдущий» для управления перемещением между элементами управления во втором ряду. Таким образом, я мог легко управлять логикой переключения между экранами, например:

WizardControl1.IsVisible = false;
WizardControl2.IsVisible = true;

Но по какой-то причине пользовательские элементы управления не имеют установщика для IsVisible. Hurray.

Тогда я подумал, что буду использовать отдельные окна для каждого раздела мастера. Проблема с этим подходом заключается в том, что теперь, когда вы переходите между ними, окно открывается в случайных положениях, и при пошаговом выполнении мастера с помощью команды next, случайно появляется следующее окно, которое действительно отвлекает и расстраивает.

Так как мне правильно разработать мастера? Я не понимаю, почему это так сложно ... не совсем ракетостроение ... замена текста и элементов управления и сохранение ввода после нажатия следующей / предыдущей!

Спасибо

Ответы [ 6 ]

9 голосов
/ 27 января 2010

Проверьте эту ссылку: http://www.codeproject.com/KB/WPF/InternationalizedWizard.aspx Это статья Джоша Смита о мастере сборки в WPF, похоже, это хороший шаблон. Я нашел, что это полезно для меня, надеюсь, вы тоже.

4 голосов
/ 03 февраля 2011

Существует также открытый код Мастер Avalon Элемент управления на codeplex.

3 голосов
/ 27 января 2010

Я бы, вероятно, подошел к этому, используя привязку данных и селекторы шаблонов. Пусть форма мастера связывается с классом «WizardData», который предоставляет список базовых классов «WizardPage».

Класс WizardData может предоставлять свойства, определяющие правильную информацию в формах, и отображать элемент управления для главной страницы, который использует селектор шаблонов для определения правильного элемента управления, отображаемого на основе фактического типа конкретной страницы мастера.

Звучит как большая работа, чем на самом деле. Это также дает вам преимущество хорошего разделения между кодом и пользовательским интерфейсом (вся «работа» выполняется классами WizardData и WizardPage) и возможность тестировать логику независимо от пользовательского интерфейса.

Это также очень подход WPF / MVVM для решения проблемы.

0 голосов
/ 06 ноября 2013

Я тоже искал решение Wizard. Мне нужно придерживаться стандартных компонентов WPF, поэтому я реализовал мастер, используя стандартную форму и элемент управления вкладками.

Я скрываю только вкладки во время выполнения, чтобы они были доступны в IDE. Во время выполнения просто используйте Назад, Далее, Готово ... для навигации по элементам вкладки

хорошо работает

0 голосов
/ 27 января 2010
  1. Свойство называется «Видимость».
  2. Я считаю, что лучше, когда я динамически добавляю и удаляю элементы управления, а не скрываю их.
0 голосов
/ 27 января 2010

Я понимаю, что это не касается непосредственно вашего вопроса, но я подумал, что упомяну это как возможную альтернативу. Я использовал контроль мастера Actipro с довольно хорошими результатами, и когда мне понадобилась поддержка, они были очень отзывчивы. Я никак не связан с ними; Мне просто не нужно писать сантехнику для управления волшебником.

...