キャンバス上のさまざまな列を中心とするラベルを作成しようとしています。このコードはもっともらしく見えます:
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
ただし、 (およびlbl.ActualWidth
) は、ラベルが作成されてからずっと後のレンダリングまで計算されないため、機能しません。
Label.Width
レイアウト操作の前に正確なものを取得する方法はありますか? Canvas
Grids または StackPanels で得られるすべてのコントロール レイアウトとフローが存在するわけではありません。