2009-09-14 14 views
7

Mam TextBlock w Grid z jego atrybutem Padding ustawionym na 5. Czasami ostatni znak jest obcięty, w zależności od tego, jaki ciąg ma ustawiona właściwość Text.WPF TextBlock Padding tnie tekst

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

Gdy Text jest ustawiony 0x0FF nie jest widoczny. Po ustawieniu na 0xAB ciąg wyświetla się dobrze. Ustawienie Padding na 0 również sprawia, że ​​wyświetlanie ciągów jest w porządku.

+0

Musimy zobaczyć wszystkie XAML, abyśmy mogli zobaczyć, co jest nie tak z logiką układu. –

+0

Podałem pełny przykład. –

Odpowiedz

6

To, co opisujesz, to oczywiście błąd układu w WPF (prawdopodobnie w TextBlock). To, czy ostatnia litera jest opakowana (i obcięta) wydaje się zależeć od faktycznej szerokości napisu i wielkości ostatniej litery w odniesieniu do rozmiaru wypełnienia.

Proponuję zgłosić błąd here.

Aby obejść ten problem, można użyć następującego kodu (wystarczy umieścić obramowanie wokół ciebie textblock i ustawić dopełnienie tam zamiast):

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

Dziękuję, zgłoś to, jak sugerujesz. –

+0

Zgłoszono pod adresem https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=497453 –

0

Dokonać kolumnie siatki, która zawiera rozmiar TextBlock auto jak ten

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

Próbowałem twojej sugestii, ale F jest nadal odcięte. –

+0

Wow, wypróbowałem twój kod i uzyskałem ten sam wynik, to obcina F. To samo dzieje się w przypadku 0x0b i 0x0d, ale inne liczby szesnastkowe są wyświetlane poprawnie. –

0

Jeśli ustawić wysokość na TextBlock do 100, czy F następnie uzyskać owinięty?

+0

To było dobre przypuszczenie, ale nie, niestety próbowałem tego, co sugerowałeś i F nie był opakowany. –

+0

Ustawienie TextWrapping = "NoWrap" rozwiązuje jednak problem. –

0

Wystarczy zwiększyć wysokość ComboBoxItem powinno rozwiązać problem.

Powiązane problemy