【发布时间】:2013-11-27 06:57:29
【问题描述】:
我在想,如果微软为平板电脑和 PC 开发了一个操作系统 - 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) 任何其他处理字体大小的方法?
【问题讨论】:
标签: c# wpf xaml windows-8 windows-8.1