将font-height设置为文本块高度的一半

时间:2014-04-01 01:32:15

标签: c# .net wpf winforms

我正在尝试将font-height设置为TextBlock大小的一半。 TextBlock在Grid中。在Grid的一行中。 网格行跨越多行。

我试过了。

Textblock t = new TextBlock();
t.LineHeight = t.ActualHeight/2;

但ActualHeight始终为0.

1 个答案:

答案 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;
};