Столбец ListView автоматическая калибровка

Скажем, у меня есть следующий ListView:

<ListView ScrollViewer.VerticalScrollBarVisibility="Auto">
  <ListView.View>
    <GridView>
      <GridViewColumn Header="Something" 
                      DisplayMemberBinding="{Binding Path=ShortText}" />
      <GridViewColumn Header="Description"
                      DisplayMemberBinding="{Binding Path=VeryLongTextWithCRs}" />
      <GridViewColumn Header="Something Else" 
                      DisplayMemberBinding="{Binding Path=AnotherShortText}" />
    </GridView>
  </ListView.View>
</ListView>

Я хотел бы, чтобы столбцы краткого текста всегда поместились в экран и столбец длинного текста для использования остающегося пространства, переход на новую строку при необходимости.

Это возможно?

12
задан H.B. 1 February 2012 в 14:31
поделиться

2 ответа

Нет простого способа сделать это с помощью GridListView, поскольку он не поддерживает установку ширины столбца на «*» (заполнить оставшееся пространство).

Здесь обсуждается, как можно подделать это, используя IValueConverter, чтобы установить ширину столбца равной TotalListWidth - SumOfColumnWidths

С другой стороны, рассматривали ли вы возможность использования DataGrid ] вместо? Это будет поддерживать тот вид макета, который вы ищете, но это значительно более сложный контроль. Он также встроен только в .NET 4, хотя вы можете получить эквивалент для 3.5 с помощью WPF Toolkit .

5
ответ дан 2 December 2019 в 06:44
поделиться

Установите Width = "Auto" в столбцах GridViewColumns. Однако из-за виртуализации вы можете столкнуться с некоторыми проблемами с автоматическим определением размера.

См. Этот вопрос.

Короче говоря, если вам нужен точный автоматический размер столбцов, вам нужно будет пересчитать ширину при изменении видимых данных из-за виртуализации.

3
ответ дан 2 December 2019 в 06:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: