我在 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也可以使字符串显示正常。

有帮助吗?

解决方案

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

我建议您报告错误此处

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

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

其他提示

制作包含文本块自动尺寸的网格列,如下所示

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

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top