Подтвердить что ты не робот

Элемент списка WPF, не содержащий слово

My 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>
4b9b3361

Ответ 1

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

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

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

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

Ответ 2

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

Для textwrapping Ответ Matt правильный для обрезки, вы должны определить значение свойства ширина или maxwidth.

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