русский
Germany.ruForen → Архив Досок→ Programmierung

Резюме для программиста

08.12.21 20:36
Re: Резюме для программиста
 
alex445 старожил
in Antwort Программист 08.12.21 20:00, Zuletzt geändert 08.12.21 20:45 (alex445)
Если тебе надо компоновать стандартные контролы, то вообще не вопрос. В WPF это легко и приятно. А если надо изобразить что-то посложней, то тут уже проблема.

Так 99% задач по кастомным контролам в WPF решается компоновкой стандартных контролов. На Формах же наоборот - почти всё делается кастомными контролами, которые ещё гораздо сложнее и дольше писать, чем обычный UserControl в WPF.


Оставшийся 1% в WPF тоже делается долго, с написанием логики и добавлением свойств для привязок (всякие DependencyProperty и прочее).


Ну вот например, сколько времени у тебя займет создания TimePicker-контрола? :)

Не знаю. Это очень непростой контрол, как я читал. С нуля написать генератор дат с какого-то по какой-то год, с учётом дней в месяце, високосных лет и прочее на сколько угодно лет вперёд - не такая уж тривиальная задача. Если не делал раньше, то на интервью наверняка налажаешь. Да и генерить когда? Каждый раз при загрузке контрола? Или один раз и сохранять в самом контроле? Очевидно, что один раз вроде логичнее. Тогда когда генерить? При разработке контрола отдельным кодом, а потом просто захардкодить нагенеренное внутри контрола? Штука ещё в том, что набор подобных данных - дни календаря на кучу лет вперёд-назад - один на весь мир нужно сгенерить один раз всего. Значит, где-то такой набор уже есть. Может, готовый взять?


Вообще, подобные контролы профи пишут не один день. Сидят в каком-нибудь DevExpress челы, которые только и делают годами, что пишут контролы под разные фреймворки. А на собесе просят за часик накидать, и чтобы всё по паттернам было и хорошо работало? Они сами тоже так же работают? Или им просто надо посмотреть, как ты пишешь алгоритм генератора дат календаря?


А в работе я бы тупо готовый взял, а не сам писал. Полно дейт пикеров готовых.


Или я тут недавно столкнулся с банальейшей задачей - сделать редактируемый ListView. Вот так чтобы клацнул 2 раза в ячейке и появился эдитбокс, по вводу чтобы ЛистВью перенимал новое значение, а по эскейпу - скидывал бы изменения. В WinForms эта задача решается на раз-два.

Хмм... А если изначально сделать элементы списка эдитбоксами, но неактивными для редактирования? А когда два раза кликнул - делать актиным?


Скидывать изменения - надо либо где-то запоминать прошлый результат, либо не подтверждать изменения из вьюмодели в модель до нажатия условных клавишь или кнопок. Если на вьюхе всё равно старые данные не появились - обновить вьюху из модели через вьюмодель. Но по-моему, эдитбокс имеет встроенную функциональность скидывать на старое значение, нет? Вроде, банальный ctrl+z.


А как вы на Формах это на раз-два решите? Уже готовый контрол с поддержкой такой функциональности?

 

Sprung zu