[WPF] Замена ужасного диалога даты
От: Baiker  
Дата: 03.11.23 10:38
Оценка: 9 (1)
Предлагаю на суд общественности диалог выбора даты/времени. Все мы знаем, какой ушлёпский этот диалог в WPF. Хуже того — он сделан только для даты, а для времени есть отдельный ужасный контрол.

Итак, вот он:



Что тут хорошего:

  1. Первое и главное: это диалог, т.е. его можно вызвать из любого места программы, т.к. не всегда я хочу показывать именно однострочный редактор даты. Так же можно "попрыгать" по датам — например, узнать какой день недели был 100 лет назад, не испортив редактируемую дату
  2. Все элементы диалога — стандартные, не надо угадывать, "а что будет, если сюда кликнуть?". Разве что дни сделаны просто цифрами (а не кнопками), но это в угоду читабельности. И даже тут если мышь расположена над днём, курсор превращается в тыкающий палец — очевидное действие
  3. Если диалог вызвали без начальной даты, берётся сегодняшняя (и от неё будут отсчитываться показываемые годы). Попутно к дате можно указать количество показываемых лет (текущий год будет в середине) и самый минимальный год. Это безумно удобно, если потенциальный выбор лет широкий (например, дни рождения). Быстро скрольнули по годам и нашли прадедушкин 1890-ый.
  4. Да, диалог растягивается, так что находить года можно куда легче
  5. Шрифт крупный и легко читабельный
  6. Прямой доступ выбора как лет, так и месяцев. При этом число месяца остаётся текущим. Если вы выбрали 31 марта и сменили месяц на февраль, апокалипсиса не случится — календарь умно сдвинется на последний доступный день — 28-е
  7. Выходные подсвечены как у дней недели, так и самих дней — трудно ошибиться!
  8. Текущая дата выделена жирным, что сразу бросается в глаза и не пересекается с подсветкой выбранной даты
  9. Выбранная дата видна внизу, на голубой метке. Слева от неё — кнопка сброса к той дате, с которой был вызван диалог (не обязательно сегодняшняя)
  10. Внизу есть зелёный редактор времени. Его можно спрятать, если не нужен. Часы-минуты легко вводятся — ПКМ и выбираем число из компактного всплывающего меню (новое время сразу же отображается в голубой метке). Если часы/минуты введены неправильно(символами или слишком большие числа), они подсветятся красным
  11. Показаны по 10 дней предыдущего и последующего месяцев (цвета Teal, чётко отделяющего числа от текущего месяца). Если на них кликнуть, текущий месяц соответственно сдвинется

Я не знаю, сколько ещё десятилетий уйдёт у MS, чтобы понять, что их убогий WPF ещё пилить и пилить. Так что пока тугодумы тугодумят, придётся всё делать самим.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.