Заполнение WPF TextBlock отсекает текст
у меня есть TextBlock на Grid С Padding атрибут установлен в 5. Иногда последний символ отрезается, в зависимости от того, какая строка 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 установлено значение 0x0F на F не видно. Когда он установлен в 0xAB строка отображается просто отлично. Установка Padding до 0 также делает отображение строки просто прекрасным.
4 ответов
то, что вы описываете, очевидно, ошибка макета в WPF (вероятно, в TextBlock). Завернута ли последняя буква (и отрезана), по-видимому, зависит от фактической ширины строки и размера последней буквы относительно размера заполнения.
Я предлагаю вам сообщить об ошибке здесь.
чтобы обойти эту проблему, вы можете использовать следующий код (просто поместите границу вокруг textblock и установите там отступ а):
<Border Padding="5" Grid.Row="0" Grid.Column="1">
<TextBlock HorizontalAlignment="Left"
Text="0x0F" TextWrapping="Wrap"
VerticalAlignment="Top" />
</Border>
сделайте столбец сетки, содержащий авто размер textblock, как это
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<TextBlock Grid.COlumn="0" Text="{Binding Path=SomeViewModelProperty}" />
</Grid>