我有两个TextBlocks,每个都有不同的字体大小,我试图将它们垂直对齐,以便它们的基线匹配。
我知道如何通过在单个TextBlock中创建多个Run元素来实现此目的,但在这种情况下,我的TextBlocks不是直接相邻的,因此不起作用。这是我的布局的简化示例:
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="100"></ColumnDefinition>
<ColumnDefinition Width="200"></ColumnDefinition>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="100"></RowDefinition>
</Grid.RowDefinitions>
<TextBlock Grid.Column="0"
FontSize="20"
VerticalAlignment="Bottom">Small</TextBlock>
<TextBlock Grid.Column="1"
FontSize="50"
VerticalAlignment="Bottom">Large</TextBlock>
</Grid>
如果我能找到一种方法来计算代码中字体的基线,那就足够了 - 我可以使用Canvas或自定义面板在代码中进行对齐 - 但我找不到任何用于查找字体指标的WP7 API。
我发现了一个非常相似的问题here,但解决方案涉及FormattedText类,不幸的是,这在WP7上不可用。
如果可能的话,我真的希望能够在不对任何边距/偏移进行硬编码的情况下执行此操作。
答案 0 :(得分:3)
虽然我同意Matt的回答,但如果您确实需要在不手动设置边距等的情况下解决问题,那么您可以通过将LineHeight
设置为最高线,然后设置{来“正确”对齐它们。 {1}}至LineStackingStrategy
。
答案 1 :(得分:-1)
因为你在XAML中对字体大小进行硬编码,硬编码边距以创建你想要的效果有什么不好?
这也意味着您只需要进行一次计算,而不是每次布置页面时强制应用程序执行此操作。