查找文本块/文本的高度

时间:2014-08-04 11:09:09

标签: c# xaml windows-store-apps

我尝试计算TextBlock的高度。 我不想在某些页面上使用Textblock。我只需知道我的内容的高度。

我试过这种方式,但它只返回0

private static double CalculateContentHeight(string content, double width, double fontSize)
{
    //Nur einen Textblock ggf. um Ressourcen zu sparen
    TextBlock textblock = new TextBlock
    {
        FontSize = fontSize,
        Text = content,
        TextWrapping = TextWrapping.Wrap,
        MaxWidth = width,
        Height = Double.NaN

    };
    return textblock.ActualHeight;
}

如果我在XAML中使用现有的TextBlock,只需:

MyXAMLTextBlock.MaxWidth = 7;
double height = MyXAMLTextBlock.ActualHeight;

我得到了合适的价值。

我知道Meassure()和Arrange()有可能像Example一样,但Meassure(尺寸)采用尺寸参数,我没有它的高度。

我知道您可以使用Double.Nan在Auto上设置大小,但它不能用

编译
double height = 9;
Size s = new Size(height, Double.Nan);

也许你可以帮助我,非常感谢。

1 个答案:

答案 0 :(得分:3)

我不知道你为什么要这样做。但有了Measure和Arrange,就有可能:

在返回ActualHeight之前,只需运行这两行:

textblock.Measure(new Size());
textblock.Arrange(new Rect());

希望我能帮到你