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()
перерисовать ваше дерево.