我正在尝试将font-height设置为TextBlock大小的一半。 TextBlock在Grid中。在Grid的一行中。 网格行跨越多行。
我试过了。
Textblock t = new TextBlock();
t.LineHeight = t.ActualHeight/2;
但ActualHeight始终为0.
答案 0 :(得分:1)
ActualHeight
仅在加载元素后计算。要在加载到可视化树之前获取TextBlock
的大小,您可以像这样调用Measure()
方法:
var t = new TextBlock();
var infiniteSize = new Size(double.PositiveInfinity, double.PositiveInfinity);
t.Text = "Something";
t.FontSize = 12;
t.Measure(infiniteSize);
t.LineHeight = t.DesiredSize.Height / 2;
infiniteSize
变量告诉Measure()
方法为您提供元素的最佳大小,假设您有无限的空间来绘制元素。
替代解决方案
您可以点按TextBlock.SizeChanged
事件并更新行高。
var t = new TextBlock();
t.SizeChanged += (sender, args) =>
{
t.LineHeight = t.ActualHeight / 2;
};