Подтверждение переключения между вкладками - PullRequest
0 голосов
/ 25 мая 2009

У меня есть две табитемы. Пользователь введет некоторые данные и сохранит их на первой вкладке. На второй вкладке перечислены сохраненные данные. Что мне нужно, это когда пользователь выбирает вторую вкладку перед сохранением данных на первой вкладке, должно отображаться окно с подтверждением «Да», «Нет» и «Отмена». Если пользователь нажимает кнопку Да, данные должны быть сохранены и перейти на вторую вкладку. Если он нажимает «Нет», данные не нужно сохранять, и, наконец, если нажать «Отмена», вкладка сохранит все введенные данные. Как я могу сделать это?

Ответы [ 3 ]

1 голос
/ 25 мая 2009

Хотя я не согласен с тем, как вы прерываете поток пользователя от вкладки к вкладке, я собираюсь пошутить над вами и ответить на вопрос:

Для этого вам понадобятся две вещи:

  1. Событие, которое происходит при нажатии на вкладку
  2. Предыдущая выбранная вкладка (с которой вы пришли)

Первый предмет:

В элементе управления вкладкой есть метод Click, на который вы можете подписаться:

Click=”MyTabButton_Click”

Второй предмет:

Эту часть вам придется выполнить вручную. Вы можете установить переменную в событии щелчка, которая содержит вкладку, которая была выбрана последней. Как только это установлено, вы можете проверить переменную (которую вы ранее установили) относительно того, какая вкладка была ранее выбрана. Затем вы можете сделать все ваши проверки.

0 голосов
/ 25 мая 2009

Для простоты вы можете выполнить следующее в файле Code Behind.

Я бы создал класс Model для данных, которые вы хотите отображать и редактировать в WPF Control. Заставьте Модель реализовать интерфейсы INotifyPropertyChanged и IEditableObject.

INotifyPropertyChanged позволит вам привязать к модели. IEditableObject позволит вам предоставлять функции редактирования, сохранения и отмены.

TabControl имеет событие SelectionChanged, которое вы можете обработать, что позволит вам определять, когда пользователь меняет вкладки, в этом обработчике вы можете использовать System.Windows.MessageBox, чтобы попросить пользователя сохранить и т. Д., System.Windows.MessageBox.Show() возвращает 1014 * Объект, который можно использовать, чтобы определить, на какую кнопку нажал пользователь, и выполнить соответствующее действие.

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

Если вам нужно что-то объяснить дальше, просто спросите.

0 голосов
/ 25 мая 2009

Delphi TPageControl имеет событие OnChanging с параметром «AllowChange». Я думаю, что-то похожее в WPF.

...