WPF-字体尺寸更改时,网格单元格中的中心标签



将一个网格分为多个部分:

    <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解决方案。尽管在我看来,这种功能可能需要一个转换器和定制样式,而定制样式的标签是不幸的,因为这似乎是如此简单的事情。

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

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

尝试:

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

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

我不明确地理解您的问题。但是我认为这是您想要的代码行。我只是在代码中添加了Col Span属性。

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

最新更新