WPF TextBlock填充正在切断文本

M. *_*ley 7 wpf textblock padding

我有一个TextBlockGridPadding属性设置为5,有时候最后一个字符被切断,这取决于字符串Text属性设置为.

<UserControl
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    x:Class="SomeClass">
    <ScrollViewer Padding="5" VerticalScrollBarVisibility="Auto">
        <Grid>
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="Auto" />
                <ColumnDefinition />
            </Grid.ColumnDefinitions>
            <Grid.RowDefinitions>
                <RowDefinition Height="Auto" />
            </Grid.RowDefinitions>
            <Label
                Grid.Row="0" Grid.Column="0"
                Content="SomeLabel"
                HorizontalAlignment="Right"
                HorizontalContentAlignment="Right"
                VerticalAlignment="Center" />
            <TextBlock
                Grid.Row="0" Grid.Column="1"
                HorizontalAlignment="Left"
                Padding="5"
                Text="0x0F"
                TextWrapping="Wrap"
                VerticalAlignment="Top" />
        </Grid>
    </ScrollViewer>
</UserControl>
Run Code Online (Sandbox Code Playgroud)

Text设置为0x0FF不可见.当它设置为0xAB字符串显示就好了.设置Padding为0也使字符串显示正常.

bit*_*onk 7

您描述的内容显然是WPF中的布局错误(可能在TextBlock中).最后一个字母是否被包装(和切断)似乎取决于字符串的实际宽度和最后一个字母相对于填充大小的大小.

我建议你在这里报告错误.

要解决此问题,您可以使用以下代码(只需在文本块周围添加边框并在其中设置填充):

<Border Padding="5" Grid.Row="0" Grid.Column="1">
    <TextBlock  HorizontalAlignment="Left"
        Text="0x0F" TextWrapping="Wrap"
        VerticalAlignment="Top" />
</Border>
Run Code Online (Sandbox Code Playgroud)