В дополнение к ответу altso , я хотел бы отметить, что вам действительно нужно вызвать .Measure()
и .Arrange()
методы для блока, чтобы .ActualHeight
и .ActualWidth
работали Например, вот так (параметры могут отличаться в зависимости от вашего варианта использования):
block.Measure(new Size(double.PositiveInfinity, double.PositiveInfinity));
block.Arrange(new Rect(0, 0, block.DesiredSize.Width, block.DesiredSize.Height));
double y = block.ActualHeight;
Это требуется в WPF и рекомендуется в Silverlight (включая SL5). В противном случае вы получите 0 в ActualHeight
в WPF и странные числа в Silverlight (в моем случае это были координаты ограничивающей рамки вокруг всего текста).
В качестве отдельного решения вы можете использовать класс FormattedText
для того же трюка.