WPF Рисование в ListBox - PullRequest
       24

WPF Рисование в ListBox

4 голосов
/ 17 сентября 2011

В CustomBontrol, производном от ListBox, мне нужно нарисовать линии, соединяющие элементы ListBoxItems, которые расположены в Canvas ItemsPanel.
Я могу добиться этого, имея класс ListBoxLines: UIElement, который рисует в OnRender, а затем включает этот объект в мой ListBox ControlTemplate (но для этого мне нужно передать содержимое списка в этот класс ...)

<ControlTemplate TargetType="{x:Type p:NetworkVisualization}">  
    <Grid>  
        <p:ListBoxLines/>
        <ItemsPresenter/>
    </Grid>
</ControlTemplate>

Мне просто интересно, есть ли более легкий путь. На самом деле я просто хотел бы добавить свой код для рисования непосредственно в мой производный класс ListBox, но если я это сделаю, то, кажется, он рисует ПОД фоном белого списка.
Можно ли каким-либо образом настроить рисование списка прямо в моем производном классе списка?
РЕДАКТИРОВАТЬ: мотивация для этого вопроса является пользовательский элемент управления для отображения узлов и сильные стороны беспроводной ячеистой сети, как на рисунке ниже: enter image description here РЕДАКТИРОВАТЬ: Дополнительная проблема: Код OnRender для ListBoxLines (ссылки на узлы) кэшируется - как заставить перерисовать это, когда узел перетаскивает? В идеале я хочу создать кеш со всеми строками, кроме перетаскиваемых в данный момент строк узлов, и перерисовывать только при перетаскивании линий в этот узел - не знаю, как это сделать.

1 Ответ

2 голосов
/ 18 сентября 2011

Спасибо за обновление вопроса - из исходного описания мы были на полностью разных страницах.


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

Аргумент в пользу промежуточного программного обеспечения очень прост:

  1. Это сэкономит вам значительное время на разработку.
  2. Вы получите результаты быстрее, что позволит вам сосредоточиться наваши конкретные требования.
  3. Даже если вы выберете коммерческого поставщика, сэкономленное время приравнивается к деньгам.

Недавно я оценил параметры промежуточного программного обеспечения для проекта менее 5 месяцев назад, поэтому я могу прямо сказать, что для приложения WPF лучшие библиотеки:

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

...

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


Примечание: вы говорите, что вам нравится часть выбора ListBox - знаете ли вы, что функциональность выбора на самом делепредоставляется базовым классом Selector?

...