因为普通的TreeView不适合我的需要,所以我创建了自己的TreeView,继承了TreeView,并在TreeViewItems之间画了界线。就像这样

到目前为止还不错,但是我想在树构建和绘制之后进行ReDraw (删除添加行)。目前,我在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。保存在lokal变量中,我无法删除已经绘制的形状或重新绘制任何东西,因为DrawingContext已经被释放了。
发布于 2017-04-06 13:48:06
您可以使用YourTreeView.InvalidateVisual()重绘树。
https://stackoverflow.com/questions/43255715
复制相似问题