Здравствуйте, barn_czn, Вы писали:
_>Намучились и натра..сь со стандартным WPF TreeView, потом натрах..сь со своим наследуемым от TreeView. Теперь хотим запилить полностью свой, может быть даже пожертвовав стандартными парадигмами WPF (вроде того чтоб не юзать ItemsControl).
Прекрасно вас понимаю. У меня тоже неплохой стаж вендописания, но вот осилить "свой контрол с нуля" в WPF — только начинаю и от той беспросветной архитектуры впадаю в уныние. По-моему, WPF хорош только для одного — кастомайзить
существующие вещи. Писать что-то самому — проще застрелиться. Это ещё раз доказывает, что WPF проектировали через анус, построив в результате неуклюжего монстра. НЕ МОЖЕТ красивая и простая идея "декларативного интерфейса" быть такой ублюдочно сложной и неуклюжей, как это сделано в WPF!
_>Фичи которые надо
_>- мульти селекшен
_>- встроеный редактор в ноду (переименование как пример)
_>- асинхронность загрузки, ленивость
Вот не надо с этим торопиться!! Я уже проклинаю тех индусов, которые вкорячили эту ленивость вдоль и поперёк в WPF — теперь вместо простых решений "взял контрол айтема и сменил проперть", ты корячишься с какими-то ItemContainerGenerator, которые тебе в пень не упёрлись.
Принцип прост: если у тебя в UI очень много элементов/больших списков — сокращай, это твой косяк проектирования. НИКТО не читает тысячу элементов. А разумное количество (10-100) ПРЕКРАСНО обрабатывается безо всяких тормозов даже при отсутствии "ленивостей".
_>- фильтрация, сортировка
шта?? В дереве?
_>- поддержка шаблонов и стилей
та... мальчикам на поиграть. Мы 10 лет слушали MS как важно делать/сохранять СТАНДАРТНЫЙ внешний вид контролов, чтобы юзер не мучался с вашими фантазиями и быдлятскими вкусами ("тёмные темки", ага!), а просто видел стандартный контрол и делал стандартные действия. (и в этом я MS поддерживаю)
А если так важно всё же влезть в отображение элемента — запросто: раздавайте API для отрисовки элемента и там уже творите что угодно.
_>Да, знаю что попахивает велосипед-строением, но другого выхода не вижу.
Не стыдно писать велосипеды. Потому что будь существующие контролы — грамотно спроектированными, велосипедить не пришлось бы!
_>Есть у каво какие советы, напутствия (кроме "в добрй путь"), опыт ?

WinForms. Запилите своё дерево, с блэкджеком и бранчами, а потом WindowsFormsHost — почему бы и нет?