WPF TreeView Удалить нарисованные линии (ReDraw)

Поскольку обычный TreeView не соответствует моим потребностям, я создал свой собственный TreeView, унаследованный от TreeView и Draw линий между моими TreeViewItems. Что-то вроде этого введите описание изображения здесь

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

            //Point connections from the parent to the childs.
            Point parentStart = parentCenter;
            Point parentEnd = new Point(parentCenter.X, middleParentChild);
            Point childEnd = new Point(childCenter.X, middleParentChild);
            Point childStart = childCenter;

            drawingContext.DrawLine(Pen, parentStart, parentEnd);
            drawingContext.DrawLine(Pen, parentEnd, childEnd);
            drawingContext.DrawLine(Pen, childEnd, childStart);

            //recursivly do this for all children
            DrawConnections(Pen, drawingContext, item);

Но у меня нет доступа к DrawingContext после того, как элемент управления был обработан один раз. Сохраненный в локальной переменной, я не могу ни удалить уже нарисованные фигуры, ни перерисовать что-либо, потому что DrawingContext уже удален.

1 ответ

Решение

Ты можешь использовать YourTreeView.InvalidateVisual() перерисовать ваше дерево.

Другие вопросы по тегам