2012-02-06 3 views
2

На самом деле я пытаюсь сделать Мастер управления. В котором я загружаю 3 страницы динамически, когда нажимаем следующую кнопку. Когда я нажимаю следующую кнопку, мне нужно сохранить детали страницы, поэтому я создал словарь для хранения пользовательского контроля. Есть ли какие-либо другие предложения по сохранению предыдущих деталей страницы.Как сохранить предыдущие страницы мастера?

+0

Я нашел, что UserControl, который я использовал в словаре, - это Windows.Forms.UserControl. но я добавил Windows.Controls.UserControl .. – Tanya

+0

Нет Нет .. Если бы кто-нибудь дал мне несколько предложений по сохранению предыдущих деталей страницы, это было бы полезно для меня, чтобы изучить WPF, я очень новичок в WPF и MVVM. – Tanya

+1

Посмотрите на эту замечательную статью: http://www.codeproject.com/Articles/31837/Creating-an-Internationalized-Wizard-in-WPF – SvenG

ответ

2

Существует множество способов достижения ваших требований. Это то, что я сделал бы, что, по-моему, очень важно для шаблона проектирования MVVM.

  1. Определение класса ViewModel, который содержит все переменные, которые вы хотите, чтобы собрать (независимо от раздела к страницам.
  2. Добавить публичное свойство с именем 'CurrentPage.
  3. Определить кадр из wizard. Вероятно, элемент <Window> с StackPanel. У окна будет заголовок вверху и область внизу для кнопок «prev» и «next» (и «закончить», если хотите).
  4. В основной области StackPanel поместите a и привяжите его DataContext к V iewModel
  5. В ViewModel создайте команды Next и Pref (используйте Prism DelegateCommand или реализуйте собственную облегченную версию, которая выводится из ICommand. 6/Кроме того, привяжите кнопку «Готово» к команде с соответствующей логикой CanExecute (вы собрали достаточно данных?).
  6. Логика Next и Prev 'CanExectue' будет смотреть на currentPage. например команда Prev CanExecute вернет false, если currentPage равен 0.
  7. У вас будет 3 разных шаблона данных, по одному на каждую страницу. В каждом шаблоне данных будет отображаться другой поднабор свойств, которые вы хотите собирать на этой странице. Привяжите элементы управления пользовательского интерфейса к свойствам в ViewModel и используйте режим привязки в двух направлениях.
  8. Выведите свою ViewModel из INotifyPropertyChanged и попросите всех установщиков упустить соответствующее уведомление. Это требуется, по крайней мере, для свойства currentPage, но для завершения решения сделайте это для всех свойств.
  9. В команде Next и Prev метод Execute будет изменять свойство currentPage (уведомление Setter должно уведомлять об этом). Представление будет обновляться автоматически.
  10. Для основной области ItemControl реализуется WizardTemplateSelector, полученный из DataTemplateSelector. Определите его как ресурс и назначьте ItemControl.ContentTemplateSelector с помощью связывания {StaticResource}.
  11. Если вы хотите, вы также можете иметь элемент управления List в левой части окна с индексом выбранного элемента, привязанным к текущей странице.

EDIT (Explainer): Основная идея состоит в том, чтобы иметь единственную ViewModel, которая может быть просмотрена в нескольких разных шаблонах данных, зависит от текущей страницы.

Смежные вопросы