2009-09-14 171 views
7

我有一个TextBlock在一个Grid与它的Padding属性设置为5.有时最后一个字符被切断,具体取决于Text属性设置为什么字符串。WPF TextBlock Padding is cut off 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设置为0x0FF是不可见的。当它设置为0xAB时,字符串显示得很好。将Padding设置为0也会使字符串显示正常。

+0

我们需要看到所有的XAML,以便我们可以看到布局逻辑有什么问题。 – 2009-09-14 20:11:16

+0

我提供了一个完整的例子。 – 2009-09-14 20:36:13

回答

6

你所描述的显然是WPF中的布局错误(可能在TextBlock中)。是否最后一个字母被包裹(切断)似乎依赖于串的实际宽度和最后一个字母的关于尺寸的填充的大小。我建议你报告错误here

要解决此问题,可以使用下面的代码(只是把边框您文本块,并设置填充有代替):

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

谢谢,我会按照你的建议报告它。 – 2009-09-17 02:24:42

+0

报告于https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=497453 – 2009-10-15 03:00:27

0

使包含文本块的自动尺寸这样

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

我尝试了你的建议,但F仍然被切断。 – 2009-09-14 20:51:15

+0

哇,我试过你的代码并得到相同的结果,它切断F.这也发生在0x0b和0x0d,但其他十六进制数字显示正常。 – 2009-09-15 12:31:59

0

网格的列如果设置为100 TextBlock的高度,并在F然后得到包裹?

+0

这是一个很好的猜测,但不,不幸的是,我尝试了你的建议,并且F没有被包裹。 – 2009-09-14 20:48:53

+0

设置TextWrapping =“NoWrap”可以解决问题。 – 2009-09-14 20:49:41

0

只是增加了ComboBoxItem的高度,它应该解决问题。