WPF TreeView删除绘制的线条(重新绘制)

时间:2017-04-06 12:48:59

标签: c# wpf treeview drawingcontext

因为普通的TreeView不符合我的需要,所以我创建了自己的TreeView,继承了TreeView和TreeViewItem之间的Draw线。像这样enter image description here

到目前为止一直很好,但我想在构建和绘制树之后重新绘制(删除添加行)。目前我在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已经处理完毕。

1 个答案:

答案 0 :(得分:1)

您可以使用YourTreeView.InvalidateVisual()重绘树。