Заморочка интересная с WPF binding
Вечером может быть покажу. Пока я пытался сделать то что делал ТС только на Javascript в стиле WPF/XAML, этот пример должен работать и в Electron. Пока проблема, я не могу обращаться к данным внутри ShadowRoot. Коменты кривые, я в полусонном состояние кодил.
Я бы сказал, что твой пример не работает:
После чего ни имя ни возраст не поменялись.
Ну и разница в паттернах. WPF - это MVVM - View <---> ViewModel <--> Model,т.е. View ничего не знает о Model, а Model ничего не знает о View.
просто найти что еще нажато без скана массива проблема
-----
Это не проблема получения инфы об состоянии клавы.
Если нужно обработать последовательность каких-то нажатий - сделай очередь и складывай туда нажатия.
В принципе, именно так и сделано в досе/винде, но для обработки нажатия вынимаются из очереди по одномu.
Но вот до этой очереди Я как-то не пробовал добираться - не нужно было.
Я думаю задачу ТС на WinForms можно было сделать в два счёта.
когда-то в начале 90-х мне выпало щясьтье оказаться на заработках "чернорабочим" в одной из европейских стран. и там в куче детских игрушек оказался какой-то детский лапатоп, названия не помню, вроде что-то начиналось с "олимп...", но не уверен. там был только бейсик. и я за пару вечеров слепил то, что сейчас пытаюсь вот уже неделю с использованием современных технологий, ускоряющих и упрощающих процесс разработки : )
конечно, я здесь могу гораздо быстрее и проще накрутить кучу всяких других полезных фич, но они все второстепенны.
в те времена меня волновал ответ на один вопрос: как сделать, чтобы оно правильно работало. а теперь (сам себе удивляюсь. не всегда придерживаюсь, но действует на мозк!) - как это "правильно" сделать, чтобы оно хоть как-то работало. а что такое правильно, придумал какой-то мудак (как его, мввм, звали?). а я, похоже, тоже это слово. но я - не один: весь мир повелся. а вроде неглупые люди.
да, AlexNek, сегодня перелопатил проект, создал для контрола отдельный адаптер (его принято называть вьюмодел), все снова работает как и прежде, просто те же самые части кода переместились с одного места (мне кажется, более подходящего) в другое.
мы постоянно гонимся за "повтороиспользованностью", думая почему-то, что все, что мы ваяем - на века, и мы будем использовать это снова и снова. а такого в реальности - менее 1%, я думаю. посему только если встретились с возможностью использовать что-то свое уже где-то созданное хотя бы
еще один раз, стоит заняться рефакторингом и привести это к удобоваримому виду. а до того - плюнуть и делать все как на один раз, только для сейчас. выпердреж с красивым дезигном - единственно из соображений удобства и минимизации затрат на дальнейшую разработку и сопровождение. нахер из головы "посторноиспользуемость"!
и мы будем использовать это снова и снова. а такого в реальности - менее 1%
У меня все же другое мнение. Грубо говоря - если выбирать между говно-кодом за час и хорошим кодом за день. То я выберу все-же второе. Потому как в общем зачете суммарное время будет меньше.
Вот у меня перед глазами есть конкретные проекты. Один планировался на месяца три для замены старого, в итоге уже год как добавляют новое и новое и до сих пор проект не разваливается. А всё потому, что был и изначально правильно построен и дальнейшее проектирование было таким же. При этом отдельные части можно использовать совсем в других проектах, хотя пока это действительно никому не нужно. Зато если ошибка, знаешь, что она может быть только в "этом месте".
создал для контрола отдельный адаптер
Я просто не делаю по другому, всё идет на автомате. Может тесты и не очень волнуют для данного случая, но нет особых проблем использовать данный "адаптер" для тестирования. А вот с вьювом...
Софт и снаружи и внутри должен выглядеть "красиво".
как его, мввм, звали
Никто никого не заставляет использовать какой либо паттерн, можно и пешком ходить в другой город. Но если удобнее на машине или поезде, то отчего бы и нет?
Вот дерево можно обойти многими способами, на "Визитор" паттерн будет удобнее.
Конечно, не следует впадать и в другую крайность - чуть что сразу какой паттерн использовать, нужен он там в этом виде или нет.
Ну да, я же написал, что код ещё не готов, хотел сделать в стиле WPF/XAML. Когда создаёшь свой веб-компонент, там мешает Shadow DOM (инкапсуляция), чтобы добраться до двух тех полей https://learn.javascript.ru/shadow-dom это сделано для того, если у вас несколько веб-компонентов, там id будут дублироваться, а в HTML допустим id должны быть уникальными, поэтому они в ShadowRoot. т.е. неком ящике, в непроницаемой оболочки. Ну и ещё это защита.
ты невнимательно читал условия задачи.
-----
Я их вообще не читал - Я читал то что ты написал.
код нажатой клавиши + код дополнительной
-----
Если под "дополнительной" подразумевается ЦТРЛ,АЛТ,Шифт - все как написано выше.
Если подразумевается вторая цифро-буквенная - переставай пудрить мозги - ибо железо/клава не обрабатывает две одновременно нажатые клавиши этого типа.
Зачем только там так много менюшек?
Это стандартное меню, нужно так делать https://www.tutorialspoint.com/electron/electron_menus.htm
Зависит еще и от того как будет использоваться контрол, в простейшем случае можно сделать всё через его ViewModel.
адаптер (вьюмодел) для контрола - полный некошер. представьте себе окно с несколькими listview. вы что - к каждому из них отдельный адаптер (вьюмодед) лепите? я обычно - один адаптер на все окно (если не какие-то особые обстоятельства, которые не могу сразу придумать), и у него - пропертиз, к которым контролы из окна могут байндиться.
почему для юзэрьконтрола все должно быть иначе? должна быть выдержана концепция - контрол, которпый байндится к каким-то пропертям адаптера (дэйтэконтэкст), который как правило - один для всего окна.
имха такая. конечно, можно прилепить каждой клавише свой адаптер, свою команду, свое все на свете, и возиться с этим потом всю оставшуюся жизнь.
и говорить, что не любите говнокод ; )
зы. да, надеюсь, все новый год встретили хорошо, были и силы и желание принять водки и сьесть маринованый опенок : )
всем - здоровья и благополучия!