WPF TextBlock Padding обрезает текст - PullRequest
7 голосов
/ 14 сентября 2009

У меня 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 ]

7 голосов
/ 16 сентября 2009

То, что вы описываете, очевидно, является ошибкой компоновки в WPF (возможно, в TextBlock). Завершение или обрезание последней буквы (или ее обрезка) зависит от фактической ширины строки и размера последней буквы по отношению к размеру отступа.

Предлагаю сообщить об ошибке здесь .

Чтобы обойти эту проблему, вы можете использовать следующий код (просто поместите рамку вокруг вашего текстового блока и установите вместо него отступы):

<Border Padding="5" Grid.Row="0" Grid.Column="1">
    <TextBlock  HorizontalAlignment="Left"
        Text="0x0F" TextWrapping="Wrap"
        VerticalAlignment="Top" />
</Border>
0 голосов
/ 08 ноября 2016

Просто увеличьте высоту ComboBoxItem, это должно решить проблему.

0 голосов
/ 15 сентября 2009

Если вы установите высоту в TextBlock равной 100, тогда F обернется?

0 голосов
/ 15 сентября 2009

Сделать столбец сетки, который содержит автоматический размер текстового блока, как это

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