Пункт WPF ListBox элемент не переносом строк

мой ListBox имеет, среди прочего, поле описания в нем, которое может быть довольно длинным. Вместо горизонтальной полосы прокрутки я хочу обернуть ее словом. Он работает, если я установил MaxWidth но поскольку ListBox изменяет размер я не хочу жестко кодировать значение.

какой лучший способ сделать это?

EDIT: описание находится в TextBlock.

упрощенный XAML (удалены ненужные вещи, по-прежнему показывает проблему:

         <ListBox BorderThickness="0" Padding="5" Name="lstTasks">
            <ListBox.ItemsSource>
                <Binding Source="{StaticResource dataTasks}"/>
            </ListBox.ItemsSource>

            <ListBox.ItemTemplate>
                <DataTemplate>
                    <Grid>
                        <TextBlock Text="{Binding Path=RequestDescription}" TextTrimming="WordEllipsis" TextWrapping="Wrap" Height="60" />
                    </Grid>
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>

2 ответов


попробуйте заставить ширину ListBoxItems быть шириной ListBox:

<ListBox
     Name="lstTasks"
     BorderThickness="0"
     Padding="5"
     HorizontalContentAlignment="Stretch">

Также вы можете попробовать отключить горизонтальный скроллинг:

<ListBox
     ScrollViewer.HorizontalScrollBarVisibility="Disabled"
     ...>

нет смысла использовать обертывание и обрезку вместе. Вы должны использовать один из них texttrimming или textwrapping. Он подрезает, не заворачивает.

для textwrapping ответ Мэтта является правильным для обрезки вы должны определить ширина или maxwidth значение свойства.

его точно так же для разработчиков SL.