Silverlight / C#画布,他的UIElements和宽度

时间:2014-04-24 14:59:45

标签: c# silverlight canvas width uielement

我创建了一个类" Component",它将被添加到我画布的子节点中。添加后,我想使用例如:

来定位这些组件
comp.setValue(Canvas.LeftProperty, 100d);

工作正常。之后,组件将添加到画布中。 现在我的实际问题是获得组件的实际宽度。我试过像

这样的东西
comp.Width;
comp.ActualWidth;

但它们是0或NaN。根据我的理解,这应该是这样的。因为它们已被添加到画布中,并且应该获得特定尺寸,或者我错了吗?

此外,我在这些组件上添加了一个OnClick-Event,它们在控制台上编写了ActualWidth,并且它可以工作。但是我想在添加它们之后直接获取这些信息..

有什么想法吗?

问候和东西!

1 个答案:

答案 0 :(得分:0)

当您将子项添加到visual tree中包含的面板时,框架将触发measure and arrange cycle。 完成此布局后,您可以通过询问ActualWidthActualHeight来获取尺寸。 显然,代码运行时循环未完成(或尚未触发)。 所以,你可以做什么?您可以在FrameworkElement.SizeChanged事件上注册事件处理程序,并在事件处理程序中运行代码。