WPF - 字体大小更改时网格单元格中的中心标签

时间:2017-09-02 17:06:33

标签: c# wpf grid label center

将网格分成多个部分,如下所示:

    <Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="1*"/>
        <RowDefinition Height="1*" />
    </Grid.RowDefinitions>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="1*"/>
        <ColumnDefinition Width="1*"/>
    </Grid.ColumnDefinitions>
</Grid>

现在创建一个标签,将内容集中在单元格中。

<Label Grid.Row="0" Grid.Column="0" Content="Hello World"   HorizontalAlignment="Center" VerticalAlignment="Center"></Label>

观察它似乎居中。

现在,将标签的字体更改为大于12的任何值。越大越好,例如24。

<Label FontSize="24" Grid.Row="0" Grid.Column="0" Content="Hello World"   HorizontalAlignment="Center" VerticalAlignment="Center"></Label>

看到文字不再居中。

如何将文本居中放入单元格,同时考虑到文本的大小?我不想为每个确实有效的人定义一个保证金,但它需要反复试验并且效率不高。

我正在寻找理想的纯WPF / XAML解决方案,内置或自定义。虽然在我看来这个功能可能需要一个转换器和一个定制标签的标签,这是不幸的,因为对于这么简单的事情似乎需要付出相当大的努力。

有一个简单的解决方案吗?

2 个答案:

答案 0 :(得分:2)

您描述的行为是由标签内的Padding引起的(默认情况下不为零)。

尝试:

<Label Padding="0" FontSize="30"  Grid.Row="0" Grid.Column="0" Content="Hello World"   HorizontalAlignment="Center" VerticalAlignment="Center">

注意:如果行的高度太小而无法容纳fontsize,则文本的可见部分将是上部,而不是中心部分。 我想渲染器在这种情况下试图使文本居中是没有用的。

答案 1 :(得分:0)

我没有清楚地理解你的问题。但我认为这是你想要的代码行。我只是在代码中添加了col span属性。

< Label FontSize="24" Grid.Row="0" Background="AliceBlue" Grid.ColumnSpan="2" Content="Hello World"   HorizontalAlignment="Center" VerticalAlignment="Center">< /Label>