Pregunta

Tengo un TextBlock en una Grid con su atributo Padding establecido en 5. A veces, el último carácter se corta, dependiendo de qué string la propiedad Text está establecida en.

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

Cuando el Texto se establece en 0x0F , el F no está visible. Cuando se establece en 0xAB , la cadena se muestra muy bien. Establecer el Padding en 0 también hace que la cadena se muestre bien.

¿Fue útil?

Solución

Lo que describe es obviamente un error de diseño en WPF (probablemente en TextBlock). Si la última letra está envuelta (y cortada) parece depender del ancho real de la cadena y el tamaño de la última letra con respecto al tamaño del relleno.

Le sugiero que informe el error aquí .

Para solucionar este problema, puede usar el siguiente código (simplemente coloque un borde alrededor de su bloque de texto y configure el relleno allí):

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

Otros consejos

Haga que la columna de la cuadrícula que contiene el tamaño automático de bloque de texto sea así

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

Si establece la altura en TextBlock en 100, ¿se ajusta la F?

Simplemente aumente la Altura del ComboBoxItem, debería resolver el problema.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top