我有这个简单的窗口来显示我的问题:
<Window x:Class="BattleShip.Views.test"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
Title="test" Height="600" Width="800">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="50"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="50"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Label x:Name="Label" Grid.Row="0" Grid.Column="0" Content="X" Margin="0,0,0,0" Padding="0,0,0,0" HorizontalContentAlignment="Center" VerticalContentAlignment="Center"
Background="Coral" FontSize="50"/>
</Grid>
问题是当增加字体大小时,标签中的文本不会垂直居中。像这样:
它被推倒了。有没有办法强迫文本保持在正中间?
这是字体大小70.它正在移出屏幕:
答案 0 :(得分:0)
您要做的是,可以使用TextBlock而不是标签来实现。它们基本上为您提供相同的功能,但差异很小。
<TextBlock x:Name="TextBlock" Grid.Row="0" Grid.Column="0" Text="X" TextAlignment="Center" VerticalAlignment="Center"
Background="Coral" FontSize="50"/>
编辑:
我真的不喜欢这个解决方案,但是这会给你你的结果,但它有点作弊,当你用负数的边距操纵控件时,必须小心控制。
<Border Margin="0 -5 0 0" Background="Coral">
<TextBlock Text="X" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="50"/>
</Border>
我的第一个解决方案的问题是文本居中,但文本块/标签在网格后面扩展,因此偏移量在视觉上混乱。
反正。希望这会对你有所帮助。