Заполнение 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>