估计呈现的UserControl的位置和宽度/高度

时间:2011-12-28 15:31:23

标签: c# silverlight silverlight-4.0

我有一个UserControl(方框),根据ItemsControl中的项目数量可以有不同的大小。 许多此类用户控件以编程方式添加到Canvas

我需要绘制互连这些用户控件的箭头。获取控件的原点坐标的最佳方法是Canvas和渲染的Width / Height,以便我可以找出箭头的起点和终点。

1 个答案:

答案 0 :(得分: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())以确保布局系统测量其大小。 / p>