我创建了一个类" Component",它将被添加到我画布的子节点中。添加后,我想使用例如:
来定位这些组件comp.setValue(Canvas.LeftProperty, 100d);
工作正常。之后,组件将添加到画布中。 现在我的实际问题是获得组件的实际宽度。我试过像
这样的东西comp.Width;
comp.ActualWidth;
但它们是0或NaN。根据我的理解,这应该是这样的。因为它们已被添加到画布中,并且应该获得特定尺寸,或者我错了吗?
此外,我在这些组件上添加了一个OnClick-Event,它们在控制台上编写了ActualWidth,并且它可以工作。但是我想在添加它们之后直接获取这些信息..
有什么想法吗?
问候和东西!
答案 0 :(得分:0)
当您将子项添加到visual tree
中包含的面板时,框架将触发measure and arrange cycle
。
完成此布局后,您可以通过询问ActualWidth
和ActualHeight
来获取尺寸。
显然,代码运行时循环未完成(或尚未触发)。
所以,你可以做什么?您可以在FrameworkElement.SizeChanged
事件上注册事件处理程序,并在事件处理程序中运行代码。