[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 ещё пилить и пилить. Так что пока тугодумы тугодумят, придётся всё делать самим.
Re: [WPF] Замена ужасного диалога даты
От: BlackEric http://black-eric.lj.ru
Дата: 03.11.23 11:49
Оценка: -1
Здравствуйте, Baiker, Вы писали:

B>Предлагаю на суд общественности диалог выбора даты/времени. Все мы знаем, какой ушлёпский этот диалог в WPF. Хуже того — он сделан только для даты, а для времени есть отдельный ужасный контрол.


А где брать-то и как использовать?
Вообще у DevExpress диалоги были не плохи. А так WPF свое похоже отжил и не факт, что МС будет его вообще дорабатывать.
https://github.com/BlackEric001
Re[2]: [WPF] Замена ужасного диалога даты
От: Osaka  
Дата: 03.11.23 12:14
Оценка: +1
BE>А так WPF свое похоже отжил и не факт, что МС будет его вообще дорабатывать.
И что ж теперь вместо него появилось, хотя бы не сильно хуже?
Re[2]: [WPF] Замена ужасного диалога даты
От: Разраб  
Дата: 03.11.23 13:16
Оценка:
Здравствуйте, BlackEric, Вы писали:


BE> не факт, что МС будет его вообще дорабатывать.

А что там дорабатывать? Движок рабочий.
под корку есть, prism 9 только вот новый вышел.
xaml-диалекты
avalonia (такал еще давно https://github.com/altbodhi/FuncLab )
тоже во всю развивается.
platform.uno (чел утв совместим с блендом, кроме того https://learn.microsoft.com/ru-ru/shows/vs-code-livestreams/vs-code-for-xaml-and-csharp-devs)
maui (фабулус для F# позволяет писать кодом)
☭ ✊ В мире нет ничего, кроме движущейся материи.
Re[3]: [WPF] Замена ужасного диалога даты
От: BlackEric http://black-eric.lj.ru
Дата: 03.11.23 13:52
Оценка:
Здравствуйте, Osaka, Вы писали:

BE>>А так WPF свое похоже отжил и не факт, что МС будет его вообще дорабатывать.

O>И что ж теперь вместо него появилось, хотя бы не сильно хуже?
JS, хоть я тоже от него плююсь.
https://github.com/BlackEric001
Re[3]: [WPF] Замена ужасного диалога даты
От: BlackEric http://black-eric.lj.ru
Дата: 03.11.23 13:53
Оценка:
Здравствуйте, Разраб, Вы писали:

Р>Здравствуйте, BlackEric, Вы писали:



BE>> не факт, что МС будет его вообще дорабатывать.

Р>А что там дорабатывать? Движок рабочий.
Р>под корку есть, prism 9 только вот новый вышел.
Р>xaml-диалекты
Р>avalonia (такал еще давно https://github.com/altbodhi/FuncLab )
Р>тоже во всю развивается.
Р>platform.uno (чел утв совместим с блендом, кроме того https://learn.microsoft.com/ru-ru/shows/vs-code-livestreams/vs-code-for-xaml-and-csharp-devs)
Р>maui (фабулус для F# позволяет писать кодом)

Кросс-платформу, которая нынче нужна почти везде. А так все больше интерфейсов на JS.
https://github.com/BlackEric001
Re[4]: [WPF] Замена ужасного диалога даты
От: Osaka  
Дата: 03.11.23 14:41
Оценка:
Р>>А что там дорабатывать? Движок рабочий.
BE>Кросс-платформу, которая нынче нужна почти везде. А так все больше интерфейсов на JS.
Телефоноприложения с единственной кнопкой "заплатить" во весь экран — это ну совершенно не "везде". Всякое специализированное десктопное ПО со сложным GUI, например с кучей графиков в реалтайме, не сочетается с тормозным и прожорливым JS совершенно никак, и кроссплатформенность тоже не критический параметр.
Re: [WPF] Замена ужасного диалога даты
От: Osaka  
Дата: 03.11.23 16:45
Оценка:
B>Прямой доступ выбора как лет, так и месяцев
Интересно, а просто календарь за год в выпадающем списке кто-нибудь делал?
Отредактировано 03.11.2023 16:45 Osaka . Предыдущая версия .
Re: [WPF] Замена ужасного диалога даты
От: Mr.Delphist  
Дата: 05.11.23 17:00
Оценка: +4 -1
Здравствуйте, Baiker, Вы писали:

B>ужасный контрол.

B>Итак, вот он:
B>Image: Select-Date.png

Полностью согласен — этот контрол ужасен.

Вернёмся к стандартному из WPF: если хочется поменять его внешний вид и поеведение — описываем это через стиль, благо состоит он из трёх основных частей (контейнер значения, кнопка и попап). Первый же гуглёж "wpf datepicker style" выдаёт, например, вот такой неплохой бложик:
https://codesdirectory.blogspot.com/2013/01/wpf-datepicker-control-style.html

Если нужно получить попап-часть отдельно — не вопрос, она называется... <Calendar>! Внезапно, правда? И ему тоже можно прикрутить диапазон Min-max по датам.
Если надо прикрутить к контролу что-то дополнительно — опять же, делается легко, например: https://stackoverflow.com/a/70000773
Про размер, шрифты и т.п. даже говорить не буду — это настраивается для любой части стиля как душе угодно. Про совместимость с темами, родительскими стилями оформления, анимации/трансформации — даже не заикаюсь.

Ну, Вы бы хоть Метанит тот же почитали — ругать его можно много и долго, но что не отнять, так это возможность быстро вкатиться в искомую тему по принципу 80/20, а тонкости уже для самостоятельного разбора.

Ваша многостраничная война с WPF уже не вызвает даже грустной улыбки. Дорогой Вы наш Рыцарь печального образа, проснитесь и очнитесь. Искренне Ваши, Санчи и прочие Пансы.
Re[5]: [WPF] Замена ужасного диалога даты
От: 尿컙拋㕪⬎⤇Ǥ꧃푙刾ꄔ൒  
Дата: 06.11.23 14:08
Оценка:
очень спорное суждение. многие трейдинговые и онлайн беттинг аппликации используют веб вью именно из-за нежелания связываться с нативными реализциями, не говоря уже про то что писать придеться как минимум два раз это.
Re[2]: [WPF] Замена ужасного диалога даты
От: 尿컙拋㕪⬎⤇Ǥ꧃푙刾ꄔ൒  
Дата: 06.11.23 14:10
Оценка:
Здравствуйте, Osaka, Вы писали:

B>>Прямой доступ выбора как лет, так и месяцев

O>Интересно, а просто календарь за год в выпадающем списке кто-нибудь делал?

дропдаун — немобильное решение, крайне неудобно вплоть до невозможности использования. адаптивные дропдауны — основаны на попап экранах.
Re[2]: [WPF] Замена ужасного диалога даты
От: Baiker  
Дата: 29.11.23 14:15
Оценка: :)
Здравствуйте, Mr.Delphist, Вы писали:

MD>Вернёмся к стандартному из WPF: если хочется поменять его внешний вид...


Нда... лучше б ты не позорился, Дельфист! Такой маразм завернул, что он даже рядом не стоял с идеей "календаря". Отдыхай, "меняй стили стандартного календаря", а людям дай спокойно юзать ГОТОВЫЙ контрол.

По дизайну — да, соглашусь, я вообще программист! Но функционально там всё на месте. Более того — в ИТ как раз и процветает "красивое ублюдство", которым невозможно пользоваться, в ущерб функциональным вещам, которые просто надо стилизовать до ума. В любом случае, ОДНА НЕДЕЛЯ и юзеры даже перестанут замечать этот твой "дизайн" и будут жамкать кнопки на автомате. Так что дизайнерские замечания я вполне уважаю (и было бы даже здорово, если кто-то нарисовал "как надо"), но придираться к функциональности — это надо быть совсем скорбным умом. Явно же видно, что диалог на порядок круче стандартного! Но интернет-срунам всё равно, я так понимаю — лишь бы поспорить. Известный диагноз, лекарство неизвестно.
Re[2]: [WPF] Замена ужасного диалога даты
От: Baiker  
Дата: 29.11.23 14:35
Оценка: :)
Здравствуйте, BlackEric, Вы писали:

BE>А где брать-то и как использовать?


Пока что "на суд общественности" — обсудить, критикнуть, предложить улучшения. Могу сразу сказать, что это НЕ коммерческий код, так что я не буду сидеть на нём как собака на сене.
Были бы ОЧЕНЬ желательны предложения по дизайну. Как прагматик, я больше сторонник "узнаваемого и очевидного", чем "красиво наляпанного", но поле для улучшений есть.

BE>Вообще у DevExpress диалоги были не плохи


Это коммерческая либа и далеко не всем компаниям охота отваливать жирный кусок бюджета для Девэксовский поделий. И от меня лично: я крайне скептически отношусь к качеству девок. В "дефицитные" времена Дельфей это был шикарный набор виджетов. Но сейчас это превратилось в bloatware, от которого лучше держаться подальше.

BE> А так WPF свое похоже отжил и не факт, что МС будет его вообще дорабатывать.


Могу согласиться с тем, что временно у M$ другие приоритеты — смузихлёбы и индусокликатели, из которых MS состоит на 90%, даже не потянут создать похожий проект, так что существующий WPF точно никто не выкинет — слишком много ценного и высокоинтеллектуального труда вложено. А вот развивать... тут мой хрустальный шар молчит, но факт тот, что наколенное позорище MAUI (стыдливо переименованный Кошмарин) — это точно тупик. И интыпрайз даже пытаться не будет на него ставить. А если проект в игноре, то рано или поздно MS ОБЯЗАНА будет что-то делать — корпоративные клиенты не потерпят "отладку на кошках" (т.е. на себе) и останутся на WinForms/WPF. И тогда Муделла позорно сделает сепукку и мы снова вернёмся откуда начали — да здравствует декларативность и WPF. И вот тогда они снова начнут пилить WPF — то, что должны были сделать ещё 5 лет назад.

Как вариант, мы тут всем RSDN'ом напишем WPF-Next и нас купят
Re[3]: [WPF] Замена ужасного диалога даты
От: rudzuk  
Дата: 29.11.23 14:40
Оценка: +1
Здравствуйте, Baiker, Вы писали:

B> Явно же видно, что диалог на порядок круче стандартного!


Если судить по количеству кнопок — однозначно круче! Все же, мемы не на пустом месте возникают, да...
avalon/3.0.2
Re[3]: [WPF] Замена ужасного диалога даты
От: rudzuk  
Дата: 29.11.23 14:43
Оценка:
Здравствуйте, Baiker, Вы писали:

B> BE> А так WPF свое похоже отжил и не факт, что МС будет его вообще дорабатывать.


B>...так что существующий WPF точно никто не выкинет — слишком много ценного и высокоинтеллектуального труда вложено.


WPF фсе. Учите новый базворд — MAUI.

B> А вот развивать... тут мой хрустальный шар молчит, но факт тот, что наколенное позорище MAUI (стыдливо переименованный Кошмарин) — это точно тупик.


А, ты уже в курсе... Ну ладно.
avalon/3.0.2
Re[4]: [WPF] Замена ужасного диалога даты
От: Baiker  
Дата: 02.12.23 16:34
Оценка:
Здравствуйте, rudzuk, Вы писали:

R>Здравствуйте, Baiker, Вы писали:


B>> Явно же видно, что диалог на порядок круче стандартного!


R>Если судить по количеству кнопок — однозначно круче! Все же, мемы не на пустом месте возникают, да...


В этом и прикол: если цель — выёживаться, то да, эппл с одной кнопкой — однозначный победитель! (интересно, сколько матов отослано рукожопу, сделавшему magic mouse? )
Но если цель — быстро И УДОБНО редактировать — извини, одной кнопкой никак.
Опять же, повторюсь: это топик-ОБСУЖДЕНИЕ, брэйншторм, если угодно. Если есть идея, как выбрать месяц без 12 кнопок — предлагайте!
Но основную цель надо держать в голове: удобство. Вы все знаете, что за гемор tree-контрол. Бывает, что без него никак, но если его вкорячили, это прям фэйспалм по юзабилити.
Или вот комбо-боксы. Видели такие, где для редактирования bool величины дают комбобокс [true], [false]?! (та же VS) — это же полный маразм!! Зато прогер-говноед упростил себе-любимому работу — вместо 20 строчек написал две.

Так что не всё так просто... Вы же видите готовый результат и он поначалу пугает. Но нарисуйте сами и посмотрите — придёте к тому же, только в профиль.

Я бы ещё пошёл на упразднение полоски лет в пользу комбобокса (хотя не факт, что станет удобнее — представьте люди работают с документами 2018....2023 года и насколько им удобно выбирать дату, не прыгая по спискам!). Но остальное — не уверен, что можно упростить. Попробуйте, может что и получится.
Re[4]: [WPF] Замена ужасного диалога даты
От: Baiker  
Дата: 02.12.23 16:36
Оценка:
Здравствуйте, rudzuk, Вы писали:

R>WPF фсе. Учите новый базворд — MAUI.


Повторять лозунги M$ нет необходимости Но мы же не бараны, правда? Куда плывёт MAUI видно и так. Поэтому консервативный WinForms ещё посмеётся на могилах авангардистов.

Кстати, кто-то может объяснить, как ЛИНУКСОВЫЙ Кошмарин внезапно стал iOS/Android/Windows БЕЗ САМОГО ЛИНУКСА?!?!
Re[5]: [WPF] Замена ужасного диалога даты
От: rudzuk  
Дата: 02.12.23 19:45
Оценка:
Здравствуйте, Baiker, Вы писали:

B> R>Если судить по количеству кнопок — однозначно круче! Все же, мемы не на пустом месте возникают, да...


B> Но если цель — быстро И УДОБНО редактировать — извини, одной кнопкой никак.

B> Опять же, повторюсь: это топик-ОБСУЖДЕНИЕ, брэйншторм, если угодно. Если есть идея, как выбрать месяц без 12 кнопок — предлагайте!

Посмотри как работает семерочный диалог выбора даты, над часами. Там все есть и сделано очень удобно. А вот если нужно для быстрого набора, то тут не диалоги изобретать нужно, а грамотно расположить контролы для ручного ввода. Видел, как операторы данные вносят? Они фигачат, как пулемет. Такие звери, даже мышку в руки не берут.
avalon/3.0.2
Re[5]: [WPF] Замена ужасного диалога даты
От: rudzuk  
Дата: 02.12.23 19:45
Оценка:
Здравствуйте, Baiker, Вы писали:

B> Повторять лозунги M$ нет необходимости Но мы же не бараны, правда? Куда плывёт MAUI видно и так. Поэтому консервативный WinForms ещё посмеётся на могилах авангардистов.


Винформс конечно всех переживет, но впф-то уже списали.

B> Кстати, кто-то может объяснить, как ЛИНУКСОВЫЙ Кошмарин внезапно стал iOS/Android/Windows БЕЗ САМОГО ЛИНУКСА?!?!


Вроде, xamarin forms поддерживает: https://learn.microsoft.com/en-us/xamarin/xamarin-forms/platform/other/gtk?tabs=windows Правда, его скопытят в следующем году.
avalon/3.0.2
Re: [WPF] Замена ужасного диалога даты
От: Разраб  
Дата: 03.12.23 00:14
Оценка:
Здравствуйте, Baiker, Вы писали:

B>Предлагаю на суд общественности диалог выбора даты/времени. Все мы знаем, какой ушлёпский этот диалог в WPF. Хуже того — он сделан только для даты, а для времени есть отдельный ужасный контрол.


Предлагаю посмотреть как реализован ввод даты в FoxPro 2.6 for DOS
просто поле с маской, набор занимает доли секунд
☭ ✊ В мире нет ничего, кроме движущейся материи.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.