2009-09-14 15 views
7

Ich habe ein TextBlock in einem Grid mit seinem Padding Attribut auf 5 festgelegt. Manchmal wird das letzte Zeichen abgeschnitten, je nachdem, welche Zeichenfolge die Text-Eigenschaft festgelegt ist.WPF Textblock Padding schneidet Text ab

<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> 

Wenn die Text-0x0F gesetzt ist die F ist nicht sichtbar. Wenn es auf 0xAB eingestellt ist, wird die Zeichenfolge einwandfrei angezeigt. Wenn Sie Padding auf 0 setzen, wird die Zeichenfolge ebenfalls gut angezeigt.

+0

Wir müssen alle XAML sehen, damit wir sehen können, was mit Ihrer Layout-Logik nicht stimmt. –

+0

Ich habe ein komplettes Beispiel zur Verfügung gestellt. –

Antwort

6

Was Sie beschreiben, ist offensichtlich ein Layout-Bug in WPF (wahrscheinlich im TextBlock). Ob der letzte Buchstabe umbrochen (und abgeschnitten) wird, hängt von der tatsächlichen Breite der Zeichenfolge und der Größe des letzten Buchstabens in Bezug auf die Größe der Auffüllung ab.

Ich schlage vor, Sie melden den Fehler here.

, um dieses Problem zu umgehen Sie den folgenden Code verwenden können (nur eine Grenze setzen um Sie die Polsterung dort statt TextBlock- und eingestellt):

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

Danke, ich werde es melden, wie Sie es vorgeschlagen haben. –

+0

Berichtet unter https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=497453 –

0

die Spalte des Gitters Stellen, die TextBlock- Auto Größe wie dieses

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

Ich habe Ihren Vorschlag versucht, aber das F ist noch abgeschnitten. –

+0

Wow, ich habe deinen Code ausprobiert und bekomme das gleiche Ergebnis, es schneidet F ab. Das passiert auch für 0x0b und 0x0d, aber andere Hex-Zahlen werden richtig angezeigt. –

0

enthält Wenn Sie die Höhe auf dem Textblock auf 100 gesetzt, wird die F dann gewickelt werden?

+0

Das war eine gute Vermutung, aber nein, leider habe ich versucht, was du vorgeschlagen hast und das F war nicht eingepackt. –

+0

Einstellung TextWrapping = "NoWrap" behebt das Problem jedoch. –

0

einfach die Höhe des ComboBoxItem erhöhen, sollte es das lösen Problem.