Вопрос

У меня есть TextBlock в Grid с атрибутом Padding , установленным на 5. Иногда последний символ обрезается, в зависимости от того, что string для свойства 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 также делает отображение строки очень хорошим.

Это было полезно?

Решение

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

Я предлагаю вам сообщить об ошибке .

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

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

Другие советы

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top