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