7

我有一个TextBlockin a Grid,其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 也会使字符串显示得很好。

4

4 回答 4

7

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

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

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

<Border Padding="5" Grid.Row="0" Grid.Column="1">
    <TextBlock  HorizontalAlignment="Left"
        Text="0x0F" TextWrapping="Wrap"
        VerticalAlignment="Top" />
</Border>
于 2009-09-16T11:05:13.813 回答
0

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

<Grid>
  <Grid.ColumnDefinitions>
    <ColumnDefinition Width="Auto" />
  </Grid.ColumnDefinitions>
  <TextBlock Grid.COlumn="0" Text="{Binding Path=SomeViewModelProperty}" />
</Grid>
于 2009-09-14T20:39:13.553 回答
0

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

于 2009-09-14T20:40:26.350 回答
0

只需增加 ComboBoxItem 的高度,它应该可以解决问题。

于 2016-11-08T14:34:29.213 回答