2011-12-28 12 views
0

ItemsControlの項目数に基づいてさまざまなサイズを持つことができるUserControl(ボックス)があります。 多くのそのようなユーザーコントロールは、プログラムによってCanvasに追加されます。レンダリングされたUserControlの位置と幅/高さの推定

これらのユーザーコントロールを相互接続する矢印を描く必要があります。コントロールの原点座標をCanvasに、レンダリングしたWidth/Heightを得るための最良の方法は、矢印の始点と終点を把握できる点です。

答えて

2

Canvasは、それぞれのコントロールの座標をCanvas.LeftCanvas.Topのプロパティを使用して提供します。だから、(少し)難しい部分は、もう一方の座標を取得しているため、レンダリングされた高さ/幅を知りたがっています。 ActualHeightActualWidth制御が既にレイアウトされていると仮定すると、あなたにこれを与える:コントロールが画面に描画する機会があった前

double top = Canvas.GetTop(control) 
double bottom = top + control.ActualHeight 
double left = Canvas.GetLeft(control) 
double right = left + control.ActualWidth 

あなたがこれをやっている場合は、あなたが最初にcontrol.UpdateLayout()を行うことができます(またはcontrol.Measure())を使用して、レイアウトシステムがそのサイズを確実に測定するようにします。

+0

これは機能しません – devnull

関連する問題