这里有一个解决方案:
但是,唉,这在 WinRT 中不受支持。WinRT 中是否有替代品/替代品?
以下解决方案取自此答案: Calculate Font baseline in WinRT
private double GetBaselineOffset(double size, FontFamily family = null, FontWeight? weight = null, FontStyle? style = null, FontStretch? stretch = null)
{
var temp = new TextBlock();
temp.FontSize = size;
temp.FontFamily = family ?? temp.FontFamily;
temp.FontStretch = stretch ?? temp.FontStretch;
temp.FontStyle = style ?? temp.FontStyle;
temp.FontWeight = weight ?? temp.FontWeight;
var _size = new Size(10000, 10000);
var location = new Point(0, 0);
temp.Measure(_size);
temp.Arrange(new Rect(location, _size));
return temp.BaselineOffset;
}
我设法通过 HACK 类型的解决方案解决了这个问题。我的主要要求是为一些文本保留空间。我使用了每个“空白空间”所需的固定字体和计算空间。一旦我知道了这一点,剩下的就变得微不足道了。