WPF - Как лучше сделать следующий контрол?
см. аттач
Код не ожидал. Мне были интересны какие то другие идеи. Но спасибо , может стащу что нибудь, пока только принцип глянул.
С ItemsControl я тоже сделал, но похоже нужно искать что то другое. Еще нет всех биндингов, а уже медленовато.
TextBox наверняка Window handle имеет. А их нужно на странице под пол.тысячи. 10 шкафов по 21 полке, на полке по два поля ввода - это одна из конфигураций для робота.
В примере проблема та же самая что и у Мурки - сложно обеспечить одинаковость стеллажей. Сейчас только три параметра - надо все перебивать либо извращаться если стеллаж с первого места перемещают на третье.
Ну и "код стеллажа" должен быть одинаковым, что в редакторе, что в использовании.
Я начинал с плюсов, но обратно уже ни за что.
Но это тема совершенно новой и бесполезной дискуссии
Еще нет всех биндингов, а уже медленовато.
А их нужно на странице под пол.тысячи.
Ну так и я о том же. Вдоволь намучавшись с C# (гриды из тысяч строк с туевой хучей активных элементов), написал свой API под плюсами для данной херни (все летает), кнопки, чекбоксы, и т.д. Но данное обсуждение наблюдаю с интересом, может все реально было и под C#, просто руки у меня из ж..ы. :))
гриды из тысяч строк с туевой хучей активных элементов
на чистом шарпе есть гриды и на "миллионы строк" без задержки.
Тоже самое было и для "плюсов". Делали срец. редактор, вначале, на "окошках". После определенного предела окошек, все замедлялось, как все окошки выбросили, сразу все залетало.
Если Вас так зудит открывайте тему, "что лучше С# или C++" и наслаждайтесь бесконечными дискуссиями
С ItemsControl я тоже сделал, но похоже нужно искать что то другое. Еще нет всех биндингов, а уже медленовато. TextBox наверняка Window handle имеет. А их нужно на странице под пол.тысячи. 10 шкафов по 21 полке, на полке по два поля ввода - это одна из конфигураций для робота.
это есть такое у WPF. если нужно много контролов на экране - тормоз полнейший.. Qt в помощь.
гриды из тысяч строк с туевой хучей активных элементов
-----
Угу... знакомое дело... и решение - тоже стандартное - строчный редактор, один в один момент времени - бо, больше одной строки за раз все одно не редактируешь.
Дело не в Плюсах или в Шарпе, а в подходе - 20 строк на странице - крути как хочешь, много - пора думать как делать.
Т.е. полки у тебя всегда есть и их всегда мах. 20 штук?
Тогда непонятны твои терзания - делаешь в конструкторе заполнение стелажа полками по максимуму - просто резервируешь массив под 20 обьектов и не мучаешься.
Надо покласть книгу по идексеру - клади. Надо получить ее по индексеру - получай.
Единственная проблема - пустая полка. Ну так научи ее говорить - "я есть пустая полка".
Проблема будет с итератором - там, скорее всего, пустые будет нужно игнорировать...
Сейчас только три параметра
Какие 3 параметра? В моем примере есть 2 вложенных коллекции и все.
надо все перебивать либо извращаться если стеллаж с первого места перемещают на третье.
Извращаться? Надо просто в коллекции перетащить айтем с 1-ого на 3-е место. В чем там извращение?
Ну и "код стеллажа" должен быть одинаковым, что в редакторе, что в использовании.
О каком коде ты говоришь? В моем примере нет никакого кода стеллажа :) Есть только данные, которыми этот стеллаж описывается и описание айтема как эти данные отображать.
Комбинации разные бывают, вот самая "тяжелая".
Для переделки моего примера под эту форму нужно минут 20 :) Справа от "Sample name" - просто два эдит бокса?
Ну и у меня ничего не тормозит :)
Какие 3 параметра?
Надо просто в коллекции перетащить айтем с 1-ого на 3-е место.
перетащить - не заметил как
О каком коде ты говоришь?
ну да кода никакого нет, но всё рисуется
На одной странице должна быть вся картинка, на других только то что в рамке и на третьей полка отдельно. "Copy/paste" не разрешено
Программа переписываться не должна.
Для переделки моего примера под эту форму нужно минут 20
А переделывать прогу низзя
Все должен делать заказчик самостоятельно.
Раз Вы так любите что то писать - я пока не могу придумать удобный способ выбора элементов (полок) с помощью мышки / клавы и при наличии скроллера. Впрочем идеи будет тоже достаточно.
У меня на домашнем десктопе тоже ничего не тормозит. Но там 16 гигов памяти и одна студия. На работе памяти меньше, студий загруженных больше, и лапоть не последней модели, но с PCMCIA.
Т.е. 3 параметра - это имя, описание и количество слотов?
Ну так это просто проперти в ModelView. Я в упор не вижу никаких проблем.
перетащить - не заметил как
Перетащить в коллекции. Т.е. при срабатывании эвента вызываешь фанкцию модели, и в этой функции делаешь следующее:
Racks.Move(oldIndex, newIndex);
И все, GUI отрисуется без тебя :)
На одной странице должна быть вся картинка, на других только то что в рамке и на третьей полка отдельно. "Copy/paste" не разрешено
Ну и в чем проблема?
ModelView у тебя одна и та же, просто по-разному отображаешь. От куда ты вообще взял Copy/Paste?
У тебя просто одна ModelView, которая отображается на несколько View.
Сделал заказчик еще один шкаф с полками и хочет добавить его на два рабочих места....Программа переписываться не должна.
Ну если заказчик сделал еще один шкаф, то от просто добавляет его в коллекцию шкафов.
Программа при этом не будет переписываться.
Более того, ModelView можно сериализовать в XML (или сохранить в БД) и заказчик сможет добавлять шкафы и менять их порядок даже не запуская программу.
А переделывать прогу низзя
Ты посмотри на "переделки" :) Я там просто добавил новые поля в ModelView и изменил отображение ;)
Раз Вы так любите что то писать - я пока не могу придумать удобный способ выбора элементов (полок) с помощью мышки / клавы и при наличии скроллера. Впрочем идеи будет тоже достаточно.
Вместо вертикального стека (ItemsControl) сделай ListBox. Если в течении дня будет время, то накидаю примерчик...