2016-11-22 2 views
0

У меня есть ListView и в это ItemTemplate есть TextBlock (внутри Grid), которая часто имеет длинные строки текста. Проблема в том, что если текст слишком длинный, он увеличивает ширину ListViewItem, а не переносит текст. Как ограничить ширину TextBlock так, чтобы она не превышала ширину ListView?Ограничение ширины TextBlock в элементе управления ListView WPF

Я не хочу ограничивать ширину до постоянного значения.

Я попытался установить ScrollViewer.HorizontalScrollBarVisibility свойство инвалидов и установка TextWrapping = «Wrap» на TextBlock, но это не сделать трюк. Когда я отладить приложение, к Живая Property Исследование показывает, что даже несмотря на то, ScrollViewer.HorizontalScrollBarVisibility отключена она по-прежнему горизонтально прокручивать (IScrollProvider.HorizontallyScrollable свойство верно).

Любая идея, как я могу ограничить размер текстового блока правильно?

+0

Вы пытались использовать свойство 'MaxWidth'' TextBlock'? –

+0

Да, я могу ограничить ширину таким образом, но я не хочу жестко указывать его на постоянное значение (ListView может изменить его размер при изменении размера главного окна приложения) или привязать его к ActualWidth ListView объекта. Оба являются хрупкими решениями. – Bedford

ответ

1

Если вы не хотите жестко закодировать MaxWidth для текстового блока, просто дать относительную ширину к нему на основе ширины ListView.

+0

Я надеялся, что есть более элегантный способ, но похоже, что это решение, которое я буду использовать (привязка свойства MaxWidth к 95% -ному значению свойства ActualWidth родительского ListView с конвертером). – Bedford

1

Играл с ним немного, и это дало мне ожидаемый результат:

<ListView x:Name="listView" 
        HorizontalAlignment="Stretch" 
        ScrollViewer.HorizontalScrollBarVisibility="Disabled" > 
      <ListView.ItemTemplate> 
       <DataTemplate> 
        <TextBlock Text="{Binding Path=.}" TextWrapping="Wrap"></TextBlock> 
       </DataTemplate> 
      </ListView.ItemTemplate> 
     </ListView> 

Надеется, что это работает для вас тоже !.

+0

Спасибо, что попробовали. Этот образец работает и для меня, но по какой-то причине моя программа не работает. Я проверю различия. – Bedford

Смежные вопросы