WPF TextBlock填充正在切断文本

时间:2009-09-14 18:53:29

标签: wpf padding textblock

我在TextBlock中有一个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 个答案:

答案 0 :(得分:7)

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

我建议你报告错误here

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

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

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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

相关问题