WPF TextBlock Padding está cortando texto
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.
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.