1

我在想,如果微软为平板电脑和个人电脑制作了一个操作系统——Windows 8。那么就必须有一种方法来控制 FontSize。示例我有一个有 4 列的主网格:

<Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}">
    <Grid.ColumnDefinitions>
        <ColumnDefinition/>
        <ColumnDefinition/>
        <ColumnDefinition/>
        <ColumnDefinition/>
    </Grid.ColumnDefinitions>
    <Grid>
        <TextBlock FontSize="20" Text="First Title"/>
    </Grid>
    <Grid Grid.Column="1">
        <TextBlock Text="Second Longer In Characters Title" FontSize="20"/>
    </Grid>
</Grid>

在小型设备上,它看起来像这样:

在此处输入图像描述

在像这样的更大设备上:

在此处输入图像描述

它不可读!

我已经尝试过 ViewBox 解决方案,但是

由于字符数,相同的 FontSizes 现在具有不同的大小

例子:

在此处输入图像描述

然后我尝试将所有页面放在 ViewBox 中:

在此处输入图像描述

这也不好,因为它破坏了我所有的星星大小的网格。

所以问题是:

1) 当我改变 FontSize 时,有没有办法计算 TextBlock 的宽度?所以我可以做类似的事情:

foreach (TextBlock on a page)
{
  //Find the textblock with biggest amount of characters
}
do
{
     FoundTextBlock.FontSize=FontSize+1;
}
while (FoundTextBlock.WidthInPixel fits 200px)
foreach (TextBlock on a page)
{
  //Set all text blocks the same FontSize
}

2)有没有办法让 ViewBoxes 当前拉伸系数,所以我可以用最少的方法找到并应用于其他人?

3) FontStretch= 属性有什么作用?- 我看不出有什么不同?

4)任何其他方式来处理字体大小?

4

1 回答 1

1

您的前两个结论(“在小型设备上看起来像这样:”,“在像这样的大型设备上:”)是错误的。文本大小对您来说只是看起来不同,因为您的模拟器已缩放。(查看两个屏幕截图如何具有相同的宽度)

在现实世界的设备上,文本将具有相同的大小(如果以英寸为单位)。

如果您想拥有相同的屏幕尺寸(以屏幕面积的百分比衡量),那么您可能希望将整个页面包装在一个 Viewbox 中。

于 2013-11-14T11:19:33.353 回答