Элемент списка WPF, а не перенос слов - PullRequest
12 голосов
/ 20 июля 2009

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

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

РЕДАКТИРОВАТЬ: описание в 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 ]

31 голосов
/ 20 июля 2009

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

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

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

<ListBox
     ScrollViewer.HorizontalScrollBarVisibility="Disabled"
     ...>
0 голосов
/ 12 декабря 2014

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

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

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

...