4

リソース ディクショナリを設定して、WPF アプリケーションのすべてのコントロールのスタイルを設定していますが、ラベルのフォントの太さを設定するときに奇妙な動作を発見しました。

ラベルのスタイルを設定する必要があります。最初は通常のフォントの太さです:

<Style x:Key="Label" TargetType="{x:Type Label}">
    <Setter Property="VerticalAlignment" Value="Center"/>
    <Setter Property="Margin" Value="10,0"/>
</Style>

2番目のセットを太字にします:

<Style x:Key="LabelBold" TargetType="{x:Type Label}">
    <Setter Property="VerticalAlignment" Value="Center"/>
    <Setter Property="Margin" Value="10,0"/>
    <Setter Property="FontWeight" Value="Bold"/>
</Style>

問題は、太字の加重フォントを使用すると、テキストが縮小する (またはテキストの間隔) ことです。

ここに画像の説明を入力

調べてみましたが、文字の太さが増してテキストが拡大することを期待しているのであれば、これには理由がないようです。これは意図されたものですか? もしそうなら、それを回避する方法はありますか?

編集:ウィンドウは次のフォントを使用しています:

<Setter Property="TextOptions.TextFormattingMode" Value="Display"/>
<Setter Property="FontFamily" Value="Calibri"/>
<Setter Property="FontSize" Value="12"/>
4

3 に答える 3

4

何が起こっているのかわかりませんが、私の推測では、何かがFontSizeボールド ラベルの選択を上書きしています。が 12 ではなく 11 に設定されている場合、例とほぼ同じ間隔を取得できます。上の 2 つのラベルが12 に設定され、下のラベルが11に設定さFontSizeれたこの画像を取得します。FontSizeFontSize

ここに画像の説明を入力

これを使用して:

App.Xaml

<Application x:Class="WpfApplication1.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             StartupUri="MainWindow.xaml">
    <Application.Resources>
        <Style x:Key="Label" TargetType="{x:Type Label}">
            <Setter Property="VerticalAlignment" Value="Center"/>
            <Setter Property="Margin" Value="10,0"/>
        </Style>
        <Style x:Key="LabelBold" TargetType="{x:Type Label}">
            <Setter Property="VerticalAlignment" Value="Center"/>
            <Setter Property="Margin" Value="10,0"/>
            <Setter Property="FontWeight" Value="Bold"/>
        </Style>
        <Style x:Key="WindowStyle" TargetType="{x:Type Window}">
            <Setter Property="TextOptions.TextFormattingMode" Value="Display"/>
            <Setter Property="FontFamily" Value="Calibri"/>
            <Setter Property="FontSize" Value="12"/>
        </Style>
    </Application.Resources>
</Application>

MainWindow.xaml

Window x:Class="WpfApplication1.MainWindow"
       xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
       xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Style="{StaticResource WindowStyle}">
    <Grid>
        <Label Style="{StaticResource Label}" Height="32" HorizontalAlignment="Left" Margin="10,10,0,0" Name="label1" VerticalAlignment="Top">This is a test of font-weight:</Label>
        <Label Style="{StaticResource LabelBold}" Height="32" HorizontalAlignment="Left" Margin="10,30,0,0" Name="label2" VerticalAlignment="Top">This is a test of font-weight:</Label>
        <Label Style="{StaticResource LabelBold}" Height="32" HorizontalAlignment="Left" Margin="10,50,0,0" FontSize="11" Name="label5" VerticalAlignment="Top">This is a test of font-weight:</Label>
    </Grid>
</Window>
于 2012-10-27T02:23:57.350 に答える
4

Mark Hall と Sayed Saad のコメントに続いて少し調査した後、何が原因であるかを突き止めることができました: TextOptions.TextFormattingMode = Display.

マークが指摘したように、太字フォントのテキストは、フォント サイズを大きくすると通常のフォント テキストよりも大きくなります。ただし、TextFormattingMode を「Ideal」に変更すると、フォント サイズに関係なく、太字フォントが通常のフォントよりも大きくなります。

編集:ここでの調査結果に基づいて、別の質問を投稿しました。これに対する答えはここにあります: TextOptions.TextFormattingMode 太字のフォントの重みを持つテキストに影響を与える

于 2012-10-29T14:17:49.987 に答える
2

同じフォントサイズを使用していないようです。同じフォント サイズと余白で 2 つのラベルを試しました。実際には太字のラベルが展開されます。

于 2012-10-26T16:04:58.630 に答える