Главная » Silverlight » Элементы управления датами

0

В Silverlight представлено два элемента управления датами (Calendar и DatePicker); в WPF ни одного из них нет. Оба они предназначены для выбора даты пользователем.

Элемент управления Calendar выводит календарь, похожий на используемый в опе­рационной системе Windows для конфигурирования системной даты. На календаре отображен один месяц. Переключать календарь на следующий или предыдущий месяц можно, щелкая на кнопках со стрелками. Вывести определенный месяц можно с по­мощью заголовка.

Элемент управления DatePicker в свернутом состоянии занимает меньше места, чем Calendar. Внешне он похож на текстовое поле, содержащее дату в длинном или коротком формате. При щелчке в правом конце поля разворачивается календарь, иден­тичный элементу Calendar. Развернутый календарь отображается поверх содержимого страницы Silverlight, как и раскрывающийся список.

На рис. 5.17 показано два режима вывода элемента Calendar и элементы DatePicker в свернутом и развернутом состояниях.

Элементы Calendar и DatePicker предоставляют свойства, позволяющие задать, какие даты могут быть выбраны пользователем (табл. 5.6).

Рис. 5.17. Элементы Calendar и DatePicker

Таблица 5.6. Свойства классов Calendar и DatePicker

Имя свойства

Назначение

DisplayDateStart и DisplayDateEnd

Границы доступного диапазона дат; пользователь не сможет открыть месяц, в котором нет ни одной доступной даты; для вывода всех дат нужно присвоить свойству DislpayDateStart значение DateTime. MinValue, а свойству DisplayDateEnd — значение DateTime. MaxValue

BlackoutDates SelectedDate

Коллекция дат, недоступных в календаре; хранящиеся в коллекции даты не будут выбираться; если одна из хранящихся дат недоступна или уже выбрана, генерируется исключение; чтобы запретить выбор любой даты в прошлом, нужно вызвать метод Calendar .BlackoutDates . AddDatesInPast()

Выбранные даты в коллекции объектов DateTime; предоставляется элементом Calendar; полезно при переключении в режим выбора многих дат с помощью свойства SelectionMode

DisplayDate

Определяет (с помощью объекта DateTime) дату, выводимую в календаре изначально; если равно null, выводится выбранная дата; если свойства DisplayDate и SelectedDate оба равны null, выводится текущая дата; отображаемая дата определяет месяц, видимый в календаре; когда элемент управления имеет фокус, вокруг текущего дня выводится квадратик, отличающийся от квадратика, который отмечает выбранный день

FirstDayOfWeek IsTodayHighlighted

День недели, выводимый в начале каждой строки календаря в самой левой позиции

Свойство, задающее подсветку текущей даты

Окончание табл. 5.6

Имя свойства

Назначение

DisplayMode (только в Calendar)

Это свойство определяет выводимый в начале месяц; если оно равно Month, календарь выводится в стандартном режиме отображения одного месяца; если оно равно Year, календарь отображает месяцы текущего года (к аналогичному эффекту приводит щелчок в заголовке месяца); после щелчка на месяце календарь отображает полный вид месяца

SelectionMode (только в Calendar)

Режим выбора дат; по умолчанию установлено значение singleDate, разрешающее выбор только одной даты; при значении None выбор запрещен; значение SingleRange разрешает выбор непрерывного диапазона дат; значение MultipleRange разрешает выбор произ­вольного набора дат; в режимах SingleRange и MultipleRange можно выбрать много дат, перемещая указатель по календарю или нажав клавишу <Ctrl> и щелкая на разных датах; выбранные даты хранятся в коллекции SelectedDates

IsDropDownOpen (только в DatePicker)

Это свойство определяет, развернут ли календарь в элементе DatePicker; значение можно устанавливать программно, при этом календарь разворачивается или скрывается

SelectedDateFormat (только в DatePicker)

Задание формата выбранной даты; доступны значения Short (Короткая) и Long (Длинная); фактический формат вывода определяется региональными параметрами, установленными на клиентском компьютере; например, при значении Short и установке региональных параметров США дата выводится в формате yyyy/mm/dd или dd/mm/ уууу, а при значении Long дата содержит названия месяца и дня

предоставляют несколько важных событий. Наиболее полезные — SelectedDateChanged в DatePicker и аналогичное ему SelectedDatesChanged в Calendar (оно используется при выборе многих дат). В обра­ботчике этих событий можно закодировать запрет выбора определенных дат, например выходных дней недели.

private void Calendar_SelectedDatesChanged (object sender, CalendarDateChangedEventArgs e)

{

/ / Проверка добавленных элементов

foreach (DateTime selectedDate in e.Addedltems)

{

if ((selectedDate.DayOfWeek == DayOfWeek.Saturday) I I (selectedDate.DayOfWeek == DayOfWeek.Sunday))

{

lblError.Text = "Выходные недоступны";

// Удаление выбранной даты

((Calendar)sender).SelectedDates.Remove (selectedDate);

}

}

}

Подключите этот обработчик к элементу Calendar и поэкспериментируйте с ним в режимах одиночного и множественного выделения. В режиме множественного выде­ления попробуйте провести указателем по дням всей недели. Будут выделены все даты, кроме недоступных субботы и воскресенья. Элемент Calendar сначала выделяет их, но через мгновение их выделение автоматически отменяется обработчиком.

Элемент Calendar предоставляет также событие DisplayDateChanged, генерируе­мое, когда пользователь переходит к другому месяцу. Элемент DatePicker поддержива­ет события CalendarOpened и CalendarClosed, генерируемые в момент развертывания и свертывания календаря, и событие DateValidationError, генерируемое, когда поль­зователь пытается ввести значение, которое нельзя интерпретировать как дату. Обычно неправильные значения отбрасываются при открытии календаря, однако с помощью приведенного ниже обработчика события DateValidationError пользователя можно предупредить об ошибке раньше, чтобы он не тратил время на ввод неправильной даты.

private void DatePicker_DateValidationError(object sender, DatePickerDateValidationErrorEventArgs e)

і

lblError. Text = ‘"" + e .Text + "’ дата неправильная; сгенерировано исключение " + е.Exception.Message;

}

Резюме

В этой главе рассмотрены следующие фундаментальные элементы и категории эле­ментов Silvelight.

•       Текстовый блок TextBlock, позволяющий выводить на экран текст, отформати­рованный с помощью встроенных и пользовательских шрифтов.

•    Элемент Image, выводящий изображения в форматах JPEG и PNG.

•       Элементы, наследующие класс ContentControl и, следовательно, способные содержать вложенные элементы любых типов.

•    Списки (ListBox, ComboBox и TabControl), выводящие коллекции элементов.

•       Текстовые элементы управления, включая простое текстовое поле TextBox, поле ввода пароля PasswordBox и поле AutoCompleteBox, предоставляющее список подсказок.

•    Элементы, отображающие числовые значения с помощью полосок разной длины.

•       , позволяющие выбирать одну или несколько дат в изображении календаря.

Конечно, еще не все детали разметки XAML рассмотрены, однако вы уже можете соз­давать мощные интерфейсы Silverlight. Теперь настало время уделить больше внимания самой технологии Silverlight. Вас ждет еще немало сюрпризов. В следующей главе мы рассмотрим фундамент модели приложений Silverlight: класс Application.

Источник: Мак-Дональд, Мэтью. Silverlight 3 с примерами на С# для профессионалов. : Пер. с англ. —- М. : ООО «И.Д. Вильяме», 2010. — 656 с. : ил. — Парал. тит. англ.

По теме:

  • Комментарии