1

Microsoft がタブレットと PC 用の 1 つの OS、Windows 8 を作成したかどうかを考えていました。それなら、FontSize を制御する方法が必要です。例 i には、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

最初の 2 つの結論 (「小さなデバイスでは次のようになります:」、「大きなデバイスでは次のようになります:」) は間違っています。エミュレーターがスケーリングされているため、テキストのサイズが異なって見えるだけです。(両方のスクリーンショットの幅が同じであることを確認してください)

テキストは、実際のデバイス上で同じサイズ (インチで測定された場合) になります。

同じ画面サイズ (画面領域のパーセントで測定) が必要な場合は、ページ全体を 1 つの Viewbox にラップすることができます。

于 2013-11-14T11:19:33.353 に答える