在 WPF 布局过程中有时我们需要根据控件实际渲染后的大小来确定控件的布局,比如在 Canvas 中居中布局一个可变大小的 TextBlock 控件,这种需求可以用如下代码实现:
TextBlock textBlock = new TextBlock();
textBlock.Text = LabelText;
textBlock.FontSize = 30;
textBlock.Measure(new Size(double.PositiveInfinity, double.PositiveInfinity));
Canvas.SetLeft(textBlock, (Width- textBlock.DesiredSize.Width)/2);
Canvas.SetBottom(textBlock, textBlock.DesiredSize.Height +4);
canvas.Children.Add(textBlock);
Measure 方法尝试渲染控件后,就可以通过属性 DesireSize 拿到控件的大小