通常の TreeView は私のニーズに合わないため、独自の TreeView を作成し、TreeView から継承し、TreeViewItems 間に線を引きます。このようなもの
ここまでは順調ですが、ツリーを作成して描画した後で ReDraw (追加行を削除) したいと思います。現在、線を描画するための DrawingContext を既に提供している OnRender メソッドですべてを行っています。
//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 が既に破棄されているため、既に描画されている図形を削除したり、何も再描画したりすることはできません。