WPF - 中心标签在网格单元格时,字体大小改变
问题描述:
独立网格划分为多个部分是这样的: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">
注:如果该行的高度太小,以适应字号,文字的可见部分将是上部,不是中心的一部分。 我想这对于渲染器试图在这种情况下居中文本是安静的。
+0
基于我的例子,我相信这是正确的,我在找什么。谢谢,我会将此标记为已接受。 – Jetompki
答
我不明白你的问题。但我认为这是你想要的代码行。我只是在代码中添加了col span属性。
< Label FontSize="24" Grid.Row="0" Background="AliceBlue" Grid.ColumnSpan="2" Content="Hello World" HorizontalAlignment="Center" VerticalAlignment="Center">< /Label>
恐怕你的问题是不可重现的:使用相同的XAML,文本保持居中(在左上角的单元格中),而不管字体大小...也许在你没有列出的XAML中有其他的东西。尝试包括一个完整的XAML列表,该列表重现了问题...注意'现在创建一个标签,将网格中的内容居中。您的XAML绝不会将标签居中在网格中,它会将其居中放置在左上方的单元格中。 –
实际上你是对的,它似乎在我提供的文本居中的例子中。我发现我的问题实际上是这样的,如果这是合理的,那么行的高度不够大,无法正确居中。 如果您要采用相同的示例,并将RowDefinition Height设置为较小的值,以使字体可见。你会看到文本不再居中,但实际上在单元格中降低了。试试这个值。显然在这种情况下,标签可以垂直居中在网格单元中,但事实并非如此。 我的意思是不是细胞,会编辑。 –
Jetompki