【问题标题】:WPF TextBlock Padding is cutting off textWPF TextBlock Padding 正在切断文本
【发布时间】:2010-11-28 05:45:46
【问题描述】:

我在Grid 中有一个TextBlock,其Padding 属性设置为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>

Text 设置为0x0F 时,F 不可见。当它设置为0xAB 时,字符串显示得很好。将Padding 设置为 0 也可以使字符串显示正常。

【问题讨论】:

  • 我们需要查看所有 XAML,以便我们了解您的布局逻辑有什么问题。
  • 我提供了一个完整的例子。

标签: wpf padding textblock


【解决方案1】:

只要增加 ComboBoxItem 的高度,就可以解决问题了。

【讨论】:

    【解决方案2】:

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

    我建议你报告错误here

    要解决此问题,您可以使用以下代码(只需在文本块周围放置一个边框并在那里设置填充):

    <Border Padding="5" Grid.Row="0" Grid.Column="1">
        <TextBlock  HorizontalAlignment="Left"
            Text="0x0F" TextWrapping="Wrap"
            VerticalAlignment="Top" />
    </Border>
    

    【讨论】:

    【解决方案3】:

    如果将 TextBlock 上的高度设置为 100,那么 F 会被包裹吗?

    【讨论】:

    • 这是一个很好的猜测,但不,不幸的是我尝试了你的建议,但 F 没有被包装。
    【解决方案4】:

    使包含文本块自动大小的网格列像这样

    <Grid>
      <Grid.ColumnDefinitions>
        <ColumnDefinition Width="Auto" />
      </Grid.ColumnDefinitions>
      <TextBlock Grid.COlumn="0" Text="{Binding Path=SomeViewModelProperty}" />
    </Grid>
    

    【讨论】:

    • 哇,我尝试了你的代码并得到相同的结果,它切断了 F。0x0b 和 0x0d 也会发生这种情况,但其他十六进制数字显示正确。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-15
    • 1970-01-01
    • 2011-08-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多