我正在尝试创建以画布上不同列为中心的标签。这段代码看起来很合理:
string[] titles = { "Acorn", "Banana", "Chrysanthemum" };
double col = 20.0;
foreach (string s in titles)
{
var lbl = new Label() { Content = s };
lbl.SetValue(Canvas.LeftProperty, col - (lbl.Width / 2.0));
myCanvas.Children.Add(lbl);
col += 150.0;
}
但它不起作用,因为lbl.Width
(and lbl.ActualWidth
) 直到渲染才计算,这是在创建标签很久之后。
有没有办法在Label.Width
布局操作之前获得准确的信息?在Canvas
Grids 或 StackPanels 中,并不是所有的控件布局和流程。