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

WPF - Как лучше сделать следующий контрол?

548  1 2 3 4 5 все
AlexNek патриот23.04.18 19:42
AlexNek
NEW 23.04.18 19:42 
в ответ Программист 23.04.18 15:04
см. аттач

Код не ожидал. Мне были интересны какие то другие идеи. Но спасибо glassglassglass, может стащу что нибудь, пока только принцип глянул.

С ItemsControl я тоже сделал, но похоже нужно искать что то другое. Еще нет всех биндингов, а уже медленовато.

TextBox наверняка Window handle имеет. А их нужно на странице под пол.тысячи. 10 шкафов по 21 полке, на полке по два поля ввода - это одна из конфигураций для робота.


В примере проблема та же самая что и у Мурки - сложно обеспечить одинаковость стеллажей. Сейчас только три параметра - надо все перебивать либо извращаться если стеллаж с первого места перемещают на третье.

Ну и "код стеллажа" должен быть одинаковым, что в редакторе, что в использовании.



#41 
  LifeRider постоялец23.04.18 20:14
LifeRider
NEW 23.04.18 20:14 
в ответ AlexNek 23.04.18 19:42
Я начинал с плюсов, но обратно уже ни за что.
Но это тема совершенно новой и бесполезной дискуссии
Еще нет всех биндингов, а уже медленовато.
А их нужно на странице под пол.тысячи.

Ну так и я о том же. Вдоволь намучавшись с C# (гриды из тысяч строк с туевой хучей активных элементов), написал свой API под плюсами для данной херни (все летает), кнопки, чекбоксы, и т.д. Но данное обсуждение наблюдаю с интересом, может все реально было и под C#, просто руки у меня из ж..ы. :))

#42 
AlexNek патриот23.04.18 22:10
AlexNek
NEW 23.04.18 22:10 
в ответ LifeRider 23.04.18 20:14
гриды из тысяч строк с туевой хучей активных элементов

на чистом шарпе есть гриды и на "миллионы строк" без задержки.

Тоже самое было и для "плюсов". Делали срец. редактор, вначале, на "окошках". После определенного предела окошек, все замедлялось, как все окошки выбросили, сразу все залетало.


Если Вас так зудит открывайте тему, "что лучше С# или C++" и наслаждайтесь бесконечными дискуссиями спок

#43 
AlexNek патриот23.04.18 22:47
AlexNek
NEW 23.04.18 22:47 
в ответ AlexNek 23.04.18 19:42

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

#44 
  moose старожил23.04.18 22:56
NEW 23.04.18 22:56 
в ответ AlexNek 23.04.18 19:42
С ItemsControl я тоже сделал, но похоже нужно искать что то другое. Еще нет всех биндингов, а уже медленовато. TextBox наверняка Window handle имеет. А их нужно на странице под пол.тысячи. 10 шкафов по 21 полке, на полке по два поля ввода - это одна из конфигураций для робота.

это есть такое у WPF. если нужно много контролов на экране - тормоз полнейший.. Qt в помощь.


#45 
Murr патриот23.04.18 23:00
Murr
NEW 23.04.18 23:00 
в ответ AlexNek 23.04.18 19:11

как обеспечить одинаковость стеллажей?

------

Что понимается под одинаковостью стелажей?

Количество полок у тебя принципиально разное и доступ к ним произвольный.

#46 
Murr патриот23.04.18 23:11
Murr
NEW 23.04.18 23:11 
в ответ LifeRider 23.04.18 20:14

гриды из тысяч строк с туевой хучей активных элементов

-----

Угу... знакомое дело... и решение - тоже стандартное - строчный редактор, один в один момент времени - бо, больше одной строки за раз все одно не редактируешь.

Дело не в Плюсах или в Шарпе, а в подходе - 20 строк на странице - крути как хочешь, много - пора думать как делать.

#47 
AlexNek патриот23.04.18 23:12
AlexNek
NEW 23.04.18 23:12 
в ответ Murr 23.04.18 23:00
Что понимается под одинаковостью стелажей?

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


#48 
Murr патриот23.04.18 23:15
Murr
NEW 23.04.18 23:15 
в ответ AlexNek 23.04.18 22:47

У WPF все же есть бОльшая зависимость от количества контролов.

Насколько Я помню - даже хуже чем у бровсеров...

#49 
Murr патриот23.04.18 23:26
Murr
NEW 23.04.18 23:26 
в ответ AlexNek 23.04.18 23:12

Т.е. полки у тебя всегда есть и их всегда мах. 20 штук?

Тогда непонятны твои терзания - делаешь в конструкторе заполнение стелажа полками по максимуму - просто резервируешь массив под 20 обьектов и не мучаешься.

Надо покласть книгу по идексеру - клади. Надо получить ее по индексеру - получай.

Единственная проблема - пустая полка. Ну так научи ее говорить - "я есть пустая полка".

Проблема будет с итератором - там, скорее всего, пустые будет нужно игнорировать...

#50 
AlexNek патриот23.04.18 23:28
AlexNek
NEW 23.04.18 23:28 
в ответ Murr 23.04.18 23:15
У WPF все же есть бОльшая зависимость от количества контролов.

Вполне возможно, но не по той причине, что я думал. Просто раньше были обычные формочки и енто никак не проявлялось

#51 
Программист коренной житель24.04.18 08:26
NEW 24.04.18 08:26 
в ответ AlexNek 23.04.18 19:42
Сейчас только три параметра

Какие 3 параметра? В моем примере есть 2 вложенных коллекции и все.


надо все перебивать либо извращаться если стеллаж с первого места перемещают на третье.

Извращаться? Надо просто в коллекции перетащить айтем с 1-ого на 3-е место. В чем там извращение?


Ну и "код стеллажа" должен быть одинаковым, что в редакторе, что в использовании.

О каком коде ты говоришь? В моем примере нет никакого кода стеллажа :) Есть только данные, которыми этот стеллаж описывается и описание айтема как эти данные отображать.

#52 
Программист коренной житель24.04.18 08:34
NEW 24.04.18 08:34 
в ответ AlexNek 23.04.18 23:12, Последний раз изменено 24.04.18 09:11 (Программист)
Комбинации разные бывают, вот самая "тяжелая".

Для переделки моего примера под эту форму нужно минут 20 :) Справа от "Sample name" - просто два эдит бокса?


Ну и у меня ничего не тормозит :)

#53 
Murr патриот24.04.18 09:32
Murr
NEW 24.04.18 09:32 
в ответ Программист 24.04.18 08:26

В чем там извращение?

-----

В объяснении заказчику как это сделать.

#54 
Программист коренной житель24.04.18 09:42
NEW 24.04.18 09:42 
в ответ Murr 24.04.18 09:32

Во-первых, зачем заказчику надо знать детали реализации?

Во-вторых, если заказчик способен понять проект на WPF, то он должен знать что такое MVVM и как оно работает.

#55 
Murr патриот24.04.18 10:25
Murr
NEW 24.04.18 10:25 
в ответ Программист 24.04.18 09:42

Именно в этом и извращение - объяснять надо - заказчику - т.е. тому кто что-то хочет, но не знает чего хочет и как должно быть... смущ

#56 
AlexNek патриот24.04.18 23:05
AlexNek
NEW 24.04.18 23:05 
в ответ Программист 24.04.18 08:26, Последний раз изменено 24.04.18 23:20 (AlexNek)
Какие 3 параметра?


Надо просто в коллекции перетащить айтем с 1-ого на 3-е место.

перетащить - не заметил как


О каком коде ты говоришь?

ну да кода никакого нет, но всё рисуется смущ

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


Сделал заказчик еще один шкаф с полками и хочет добавить его на два рабочих места....


Программа переписываться не должна.

#57 
AlexNek патриот24.04.18 23:19
AlexNek
NEW 24.04.18 23:19 
в ответ Программист 24.04.18 08:34, Последний раз изменено 24.04.18 23:38 (AlexNek)
Для переделки моего примера под эту форму нужно минут 20

А переделывать прогу низзя спок

Все должен делать заказчик самостоятельно.


Раз Вы так любите что то писать - я пока не могу придумать удобный способ выбора элементов (полок) с помощью мышки / клавы и при наличии скроллера. Впрочем идеи будет тоже достаточно.


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

#58 
Программист коренной житель25.04.18 08:18
NEW 25.04.18 08:18 
в ответ AlexNek 24.04.18 23:05

Т.е. 3 параметра - это имя, описание и количество слотов?

Ну так это просто проперти в ModelView. Я в упор не вижу никаких проблем.

перетащить - не заметил как

Перетащить в коллекции. Т.е. при срабатывании эвента вызываешь фанкцию модели, и в этой функции делаешь следующее:

Racks.Move(oldIndex, newIndex);

И все, GUI отрисуется без тебя :)


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

Ну и в чем проблема?

ModelView у тебя одна и та же, просто по-разному отображаешь. От куда ты вообще взял Copy/Paste?

У тебя просто одна ModelView, которая отображается на несколько View.



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

Ну если заказчик сделал еще один шкаф, то от просто добавляет его в коллекцию шкафов.

Программа при этом не будет переписываться.

Более того, ModelView можно сериализовать в XML (или сохранить в БД) и заказчик сможет добавлять шкафы и менять их порядок даже не запуская программу.

#59 
Программист коренной житель25.04.18 08:25
NEW 25.04.18 08:25 
в ответ AlexNek 24.04.18 23:19
А переделывать прогу низзя спок

Ты посмотри на "переделки" :) Я там просто добавил новые поля в ModelView и изменил отображение ;)


Раз Вы так любите что то писать - я пока не могу придумать удобный способ выбора элементов (полок) с помощью мышки / клавы и при наличии скроллера. Впрочем идеи будет тоже достаточно.

Вместо вертикального стека (ItemsControl) сделай ListBox. Если в течении дня будет время, то накидаю примерчик...

#60 
1 2 3 4 5 все