2009-02-05 8 views
2

Я имею в виду, что у меня есть один из этих элементов управления и текст внутри одного из его столбцов. Обычно, если пользователь меняет размер столбца, это просто текст. Если я пытаюсь использовать шаблон с текстовым блоком или текстовым полем и устанавливаю TextWrapping = «Wrap» внутри шаблона - это действительно ничего не меняет. Каков выход?Как получить работу ListView (или DataGrid) с TextWrapping (WPF)

* И да, я искал, прежде чем спрашивать, и нашел похожие вопросы на этом сайте. Но без ответа (((*


Энди, ТНХ для ответа, хотя я и сам думал, что он должен действовать таким образом. я ckecked свой простой вариант, и он работает. Хотя у меня есть аналогичный пример и это не сработало. Единственное различие заключалось в том, что в шаблоне я использовал свой UserControl с TextBlock и другими элементами управления внутри StackPanel внутри его Content Property. И после часа экспериментов с Width, HorizontalAlignment и т. д. в другой части кода Я понимаю, что ничего не могу сделать. А потом - я просто изменил StackPanel с помощью Grid. И - viola! - он работает. Я не знаю, является ли это ошибкой или какой-то конкретной реакцией StackPanel (на самом деле я проверил ее параметры во время выполнения - и это было очень странно: Actu alWidth была больше, чем DesiredSize и реальная ширина панели). Так что, если кто-то может мне сказать - почему это так? - Это было бы интересно. Если нет - я просто использую версию с сеткой.

ответ

4

Следующая работал для меня:

<ListView ItemsSource="{Binding Source={StaticResource MyItems}}"> 
    <ListView.View> 
     <GridView> 
      <GridViewColumn Width="50" Header="Column 1"> 
       <GridViewColumn.CellTemplate> 
        <DataTemplate x:Name="col1Template"> 
         <TextBlock TextWrapping="WrapWithOverflow" Text="{Binding Path=Column1Text}" /> 
        </DataTemplate> 
       </GridViewColumn.CellTemplate> 
      </GridViewColumn> 
      ... 
     </GridView> 
    </ListView.View> 
</ListView> 

Это вызвало текст в первой колонке, чтобы обернуть на несколько строк, если ширина колонки не было достаточно широким, чтобы показать весь текст.

1

Удостоверьтесь, что у вас нет установленного значения RowHeight, или он будет переопределять «истинную» высоту текстового блока после его обнуления текста.