我在考虑微软是否为平板电脑和PC制作了一个操作系统-Windows8。那么必须有一种控制FontSize的方法。示例我有一个包含4列的Main网格:
<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)还有其他处理字体大小的方法吗?
您的前两个结论(“在小型设备上看起来像这样:”,“在较大的设备上看起来像这样:”)是错误的。文本大小只对您看起来有所不同,因为模拟器已缩放。(查看两个屏幕截图的宽度如何相同)
在现实世界中的设备上,文本的大小将相同(如果以英寸为单位)。
如果要具有相同的屏幕尺寸(以屏幕面积的百分比来衡量),则可能需要将整个页面包装在一个Viewbox中。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句