Элемент списка 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>
Ответы
Ответ 1
Попробуйте использовать ширину ListBoxItems для ширины ListBox:
<ListBox
Name="lstTasks"
BorderThickness="0"
Padding="5"
HorizontalContentAlignment="Stretch">
Также вы можете попробовать отключить горизонтальную прокрутку:
<ListBox
ScrollViewer.HorizontalScrollBarVisibility="Disabled"
...>
Ответ 2
Нет смысла использовать обертку и обрезку. Вы должны использовать один из них texttrimming или textwrapping. Это он обрезает, он не обертывается.
Для textwrapping Ответ Matt правильный для обрезки, вы должны определить значение свойства ширина или maxwidth.
Это точно так же для разработчиков SL.