我有一个UserControl
(方框),根据ItemsControl
中的项目数量可以有不同的大小。
许多此类用户控件以编程方式添加到Canvas
。
我需要绘制互连这些用户控件的箭头。获取控件的原点坐标的最佳方法是Canvas
和渲染的Width
/ Height
,以便我可以找出箭头的起点和终点。
答案 0 :(得分:2)
Canvas
通过Canvas.Left
和Canvas.Top
附加属性提供每个控件的坐标 - 无论如何,如果您自己定位它们,就会知道它们。所以(稍微)更难的部分是获得另一个坐标,为此你想知道渲染的高度/宽度。假设控件已经布局,ActualHeight
和ActualWidth
会给你这个:
double top = Canvas.GetTop(control)
double bottom = top + control.ActualHeight
double left = Canvas.GetLeft(control)
double right = left + control.ActualWidth
如果您在控件有可能在屏幕上呈现之前执行此操作,则可以先执行control.UpdateLayout()
(或control.Measure()
)以确保布局系统测量其大小。 / p>