WPF:标签文本不会在gridcell

时间:2016-03-11 12:55:10

标签: c# wpf text label center

我有这个简单的窗口来显示我的问题:

<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>

问题是当增加字体大小时,标签中的文本不会垂直居中。像这样:

Font size 50

它被推倒了。有没有办法强迫文本保持在正中间?

这是字体大小70.它正在移出屏幕:

Font size 70

1 个答案:

答案 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>

我的第一个解决方案的问题是文本居中,但文本块/标签在网格后面扩展,因此偏移量在视觉上混乱。

反正。希望这会对你有所帮助。