Deutsch
Germany.ruФорумы → Архив Досок→ Программирование

Заморочка интересная с WPF binding

1981  1 2 3 4 5 6 все
Программист коренной житель09.12.20 10:22
NEW 09.12.20 10:22 
в ответ uscheswoi_82 09.12.20 06:52
Вот одно из моих приложение, простой калькулятор на Electron, фон полупрозачный с blur эффектом, ночью тёмная тема, днём светлая тема.

Отлично! А насколько удобно реализовать привязку данных в таком приложении?

#61 
uscheswoi_82 местный житель09.12.20 12:49
NEW 09.12.20 12:49 
в ответ Программист 09.12.20 10:22, Последний раз изменено 09.12.20 12:59 (uscheswoi_82)

Вечером может быть покажу. Пока я пытался сделать то что делал ТС только на Javascript в стиле WPF/XAML, этот пример должен работать и в Electron. Пока проблема, я не могу обращаться к данным внутри ShadowRoot. Коменты кривые, я в полусонном состояние кодил.

Если я кому-то отвечаю, это не значит что я ему симпатизирую, каждый остаётся при своём мнение
#62 
Программист коренной житель09.12.20 13:46
NEW 09.12.20 13:46 
в ответ uscheswoi_82 09.12.20 12:49, Последний раз изменено 09.12.20 13:47 (Программист)

Я бы сказал, что твой пример не работает:



После чего ни имя ни возраст не поменялись.


Ну и разница в паттернах. WPF - это MVVM - View <---> ViewModel <--> Model,т.е. View ничего не знает о Model, а Model ничего не знает о View.


#63 
AlexNek патриот09.12.20 13:47
AlexNek
NEW 09.12.20 13:47 
в ответ Murr 09.12.20 00:40
Состояние всех служебных кнопок фиксируется

Ну не в этом же проблема. Есть у меня состояния всех кнопок, можно сказать в массиве.

Опросить состояние 2х нужных тоже не проблема. А вот просто найти что еще нажато без скана массива проблема.

#64 
AlexNek патриот09.12.20 14:05
AlexNek
NEW 09.12.20 14:05 
в ответ uscheswoi_82 09.12.20 06:52
Вот одно из моих приложение

Ну и что? Я тоже игрался, на Flutter сделал. Зачем только там так много менюшек?

#65 
Murr патриот09.12.20 18:04
Murr
NEW 09.12.20 18:04 
в ответ AlexNek 09.12.20 13:47

просто найти что еще нажато без скана массива проблема

-----

Это не проблема получения инфы об состоянии клавы.


Если нужно обработать последовательность каких-то нажатий - сделай очередь и складывай туда нажатия.

В принципе, именно так и сделано в досе/винде, но для обработки нажатия вынимаются из очереди по одномu.

Но вот до этой очереди Я как-то не пробовал добираться - не нужно было.

#66 
AlexNek патриот09.12.20 19:18
AlexNek
NEW 09.12.20 19:18 
в ответ Murr 09.12.20 18:04
сделай очередь и складывай туда нажатия

ты невнимательно читал условия задачи. Никаких очередей и никакого сканирования - код нажатой клавиши + код дополнительной.

#67 
  moose коренной житель09.12.20 21:48
NEW 09.12.20 21:48 
в ответ uscheswoi_82 09.12.20 03:24, Последний раз изменено 09.12.20 22:00 (moose)
Я думаю задачу ТС на WinForms можно было сделать в два счёта.

когда-то в начале 90-х мне выпало щясьтье оказаться на заработках "чернорабочим" в одной из европейских стран. и там в куче детских игрушек оказался какой-то детский лапатоп, названия не помню, вроде что-то начиналось с "олимп...", но не уверен. там был только бейсик. и я за пару вечеров слепил то, что сейчас пытаюсь вот уже неделю с использованием современных технологий, ускоряющих и упрощающих процесс разработки : )

конечно, я здесь могу гораздо быстрее и проще накрутить кучу всяких других полезных фич, но они все второстепенны.

в те времена меня волновал ответ на один вопрос: как сделать, чтобы оно правильно работало. а теперь (сам себе удивляюсь. не всегда придерживаюсь, но действует на мозк!) - как это "правильно" сделать, чтобы оно хоть как-то работало. а что такое правильно, придумал какой-то мудак (как его, мввм, звали?). а я, похоже, тоже это слово. но я - не один: весь мир повелся. а вроде неглупые люди.

да, AlexNek, сегодня перелопатил проект, создал для контрола отдельный адаптер (его принято называть вьюмодел), все снова работает как и прежде, просто те же самые части кода переместились с одного места (мне кажется, более подходящего) в другое.

мы постоянно гонимся за "повтороиспользованностью", думая почему-то, что все, что мы ваяем - на века, и мы будем использовать это снова и снова. а такого в реальности - менее 1%, я думаю. посему только если встретились с возможностью использовать что-то свое уже где-то созданное хотя бы еще один раз, стоит заняться рефакторингом и привести это к удобоваримому виду. а до того - плюнуть и делать все как на один раз, только для сейчас. выпердреж с красивым дезигном - единственно из соображений удобства и минимизации затрат на дальнейшую разработку и сопровождение. нахер из головы "посторноиспользуемость"!


#68 
AlexNek патриот09.12.20 23:04
AlexNek
NEW 09.12.20 23:04 
в ответ moose 09.12.20 21:48
и мы будем использовать это снова и снова. а такого в реальности - менее 1%

У меня все же другое мнение. Грубо говоря - если выбирать между говно-кодом за час и хорошим кодом за день. То я выберу все-же второе. Потому как в общем зачете суммарное время будет меньше.

Вот у меня перед глазами есть конкретные проекты. Один планировался на месяца три для замены старого, в итоге уже год как добавляют новое и новое и до сих пор проект не разваливается. А всё потому, что был и изначально правильно построен и дальнейшее проектирование было таким же. При этом отдельные части можно использовать совсем в других проектах, хотя пока это действительно никому не нужно. Зато если ошибка, знаешь, что она может быть только в "этом месте".


создал для контрола отдельный адаптер

Я просто не делаю по другому, всё идет на автомате. Может тесты и не очень волнуют для данного случая, но нет особых проблем использовать данный "адаптер" для тестирования. А вот с вьювом...

Софт и снаружи и внутри должен выглядеть "красиво".


как его, мввм, звали

Никто никого не заставляет использовать какой либо паттерн, можно и пешком ходить в другой город. Но если удобнее на машине или поезде, то отчего бы и нет?


Вот дерево можно обойти многими способами, на "Визитор" паттерн будет удобнее.

Конечно, не следует впадать и в другую крайность - чуть что сразу какой паттерн использовать, нужен он там в этом виде или нет.


#69 
uscheswoi_82 местный житель10.12.20 02:49
NEW 10.12.20 02:49 
в ответ Программист 09.12.20 13:46

Ну да, я же написал, что код ещё не готов, хотел сделать в стиле WPF/XAML. Когда создаёшь свой веб-компонент, там мешает Shadow DOM (инкапсуляция), чтобы добраться до двух тех полей https://learn.javascript.ru/shadow-dom это сделано для того, если у вас несколько веб-компонентов, там id будут дублироваться, а в HTML допустим id должны быть уникальными, поэтому они в ShadowRoot. т.е. неком ящике, в непроницаемой оболочки. Ну и ещё это защита.

Если я кому-то отвечаю, это не значит что я ему симпатизирую, каждый остаётся при своём мнение
#70 
  moose коренной житель10.12.20 13:00
NEW 10.12.20 13:00 
в ответ AlexNek 09.12.20 23:04

при чем здесь "красивый код", "говнокод"? нужно, чтобы было хорошо, и не нужно, чтобы было плохо. а мввм при этом или не-мввм - это решать не из религиозных соображений, а из соображений целесообразности и удобства.

#71 
AlexNek патриот10.12.20 13:10
AlexNek
NEW 10.12.20 13:10 
в ответ moose 10.12.20 13:00
нужно, чтобы было хорошо ... из соображений целесообразности и удобства

Ну так это и есть "красивый код". Понятие красоты просто у всех разное, да и меняется со временем.

#72 
AlexNek патриот10.12.20 13:14
AlexNek
NEW 10.12.20 13:14 
в ответ moose 10.12.20 13:00
не из религиозных соображений

То что форма должна быть "тупая" - это вроде давно уже не религия, а насущная потребность.

#73 
Murr патриот10.12.20 17:08
Murr
NEW 10.12.20 17:08 
в ответ AlexNek 09.12.20 19:18

ты невнимательно читал условия задачи.

-----

Я их вообще не читал - Я читал то что ты написал.


код нажатой клавиши + код дополнительной

-----

Если под "дополнительной" подразумевается ЦТРЛ,АЛТ,Шифт - все как написано выше.

Если подразумевается вторая цифро-буквенная - переставай пудрить мозги - ибо железо/клава не обрабатывает две одновременно нажатые клавиши этого типа.


#74 
  moose коренной житель10.12.20 21:25
NEW 10.12.20 21:25 
в ответ AlexNek 10.12.20 13:14, Последний раз изменено 10.12.20 21:28 (moose)

начинает походить на войну остроконечников с тупоконечниками : )

То что форма должна быть "тупая" - это вроде давно уже не религия, а насущная потребность.

вот вы, ясно, тупоконечник-радикал.

#75 
AlexNek патриот10.12.20 23:20
AlexNek
NEW 10.12.20 23:20 
в ответ Murr 10.12.20 17:08
Если под "дополнительной" подразумевается ЦТРЛ,АЛТ,Шифт - все как написано выше.

так там всё правильно/неправильно. Написано правильно, но не так так как требуется.

#76 
AlexNek патриот10.12.20 23:23
AlexNek
NEW 10.12.20 23:23 
в ответ moose 10.12.20 21:25
начинает походить на войну остроконечников с тупоконечниками

С такой позицией можно к любой проблеме подойти.

Всё помешались на агиле - остроконечники развитые блин.

Лучше уж любимый водопад, особенно летом. бебе

#77 
uscheswoi_82 местный житель11.12.20 17:42
NEW 11.12.20 17:42 
в ответ AlexNek 09.12.20 14:05
Зачем только там так много менюшек?

Это стандартное меню, нужно так делать https://www.tutorialspoint.com/electron/electron_menus.htm

Если я кому-то отвечаю, это не значит что я ему симпатизирую, каждый остаётся при своём мнение
#78 
AlexNek патриот12.12.20 12:59
AlexNek
NEW 12.12.20 12:59 
в ответ uscheswoi_82 11.12.20 17:42
Это стандартное меню, нужно так делать

Даже и там видно, что можно делать как хочешь.

Когда ты уже будешь свои мысли писать, а не нас учили, там написано... спок

#79 
  moose коренной житель02.01.21 21:03
NEW 02.01.21 21:03 
в ответ AlexNek 08.12.20 22:04, Последний раз изменено 02.01.21 21:05 (moose)
Зависит еще и от того как будет использоваться контрол, в простейшем случае можно сделать всё через его ViewModel.

адаптер (вьюмодел) для контрола - полный некошер. представьте себе окно с несколькими listview. вы что - к каждому из них отдельный адаптер (вьюмодед) лепите? я обычно - один адаптер на все окно (если не какие-то особые обстоятельства, которые не могу сразу придумать), и у него - пропертиз, к которым контролы из окна могут байндиться.

почему для юзэрьконтрола все должно быть иначе? должна быть выдержана концепция - контрол, которпый байндится к каким-то пропертям адаптера (дэйтэконтэкст), который как правило - один для всего окна.

имха такая. конечно, можно прилепить каждой клавише свой адаптер, свою команду, свое все на свете, и возиться с этим потом всю оставшуюся жизнь. и говорить, что не любите говнокод ; )


зы. да, надеюсь, все новый год встретили хорошо, были и силы и желание принять водки и сьесть маринованый опенок : )

всем - здоровья и благополучия!

#80 
1 2 3 4 5 6 все