Xaml TextLineBounds剪下字母底部
我在Windows8.1中使用TextLineBounds来对齐基线上不同字体大小的文本,例如 XAML看起来像:Xaml TextLineBounds剪下字母底部,xaml,windows-8.1,textlinebounds,Xaml,Windows 8.1,Textlinebounds,我在Windows8.1中使用TextLineBounds来对齐基线上不同字体大小的文本,例如 XAML看起来像: <Grid x:Name="PageHeader"> <Grid.RowDefinitions> <RowDefinition Height="Auto" /> <RowDefinition Height="28" /> </Grid.Ro
<Grid x:Name="PageHeader">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="28" />
</Grid.RowDefinitions>
<Grid Grid.Row="0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="15" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="15" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="1"
VerticalAlignment="Bottom"
TextLineBounds="TrimToBaseline"
FontSize="50"
Text="OOO Big Font" />
<TextBlock Grid.Column="3"
VerticalAlignment="Bottom"
TextLineBounds="TrimToBaseline"
FontSize="26"
Text="OOO SmallerFont" />
<TextBlock Grid.Column="5"
VerticalAlignment="Bottom"
TextLineBounds="TrimToBaseline"
FontSize="20"
Text="OOO Even Smaller Font" />
</Grid>
</Grid>
当我调整窗口大小时,在某个点(在最小尺寸500之前)会剪裁下降部分(我还看到,即使在没有下降部分的情况下,整条直线上的底部一两个像素也会被剪裁,这会导致像扁平的O一样的瑕疵)
显示元素不会在调整大小时更改,也不会因视觉状态等进行修改
这似乎是一个bug,但不确定是否有解决方法(除了放弃使用TextLineBounds)。我认为这是预期的行为,也许快速解决方法只是一个快速
,尽管我刚刚注意到您已经在每个块上设置了它,我认为这否定了基线修剪的必要性。我不认为这是预期的行为,因为当网格的宽度改变时,会发生一些事情,但文本块的高度不会。事实上,“使用此属性的一个主要原因是控制文本元素的对齐,例如,对齐页眉的基线”。我之所以说它看起来是有意的,是因为如果您查看它们的示例,您会看到您可以预期修剪的位置(覆盖示例中文本部分的黄色块)虽然我不确定你提到的网格的宽度/高度是什么意思。我明白你的意思。我认为(希望:)黄色覆盖图是用来显示文本是如何测量的,而不是如何呈现的,有趣的是,这些注释表明了“相邻行”的适用性。因此,如果您使用我发布的确切XAML并将其弹出到新的Windows 8.1页面(无虚饰),那么我的用例(以及MSDN博客帖子?)在高度/宽度方面可能存在缺陷,它将在横向/纵向以及将屏幕大小调整为1/2时呈现良好效果,但当您在某个点朝着最小500 px的宽度调整时,下降部分被切碎-因此它的行为似乎不一致。我刚刚遇到了这个问题,感谢您的讨论。可能是当文本框变得太小而无法显示所有文本时(显示“…”),它的行为就好像有第二行一样(因此“相邻行”起作用)。那当然是个错误。