В WPF с использованием ListView есть элегантный способ автоматического изменения размеров элементов? - PullRequest
1 голос
/ 24 мая 2010

Я недавно написал, мое первое приложение WPF, в котором есть список элементов, которые опрашиваются из веб-службы.Элементы отображаются / привязаны к данным в ListView через GridView.Фоновый поток периодически опрашивает веб-службу и обновляет список.

Если, скажем, у меня было три элемента, изначально привязанных к ListView, которые просто отображают описание и три описания, где что-то вроде:

- ProjectA
- ProjectB
- ProjectC

Позже добавляется новый элемент с описанием 'AReallyReallyLongProjectName', в результате я получаю список вроде:

- ProjectA
- ProjectB
- ProjectC
- AReallyR

GridViewColumn не будет обновлять свою ширину и впоследствии будет обрезать любыеновые элементы, которые расширили исходную ширину.

Я добавил этот фрагмент кода, который заставляет столбец изменить размер, но это кажется немного странным.(Просто кажется странным задавать ширину, чтобы просто вернуть ее в ноль для принудительного изменения размера)

if(gridView != null) {
    foreach(var column in gridView.Columns) {
        if (double.IsNaN(column.Width) column.Width = column.ActualWidth;
        column.Width = double.NaN;
    }
}

Есть ли лучшее, более элегантное решение для достижения этой же цели?

Ответы [ 2 ]

1 голос
/ 24 мая 2010

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

private void ResizeGridViewColumn(GridViewColumn column)
{
    if (double.IsNaN(column.Width))
    {
        column.Width = column.ActualWidth;
    }

    column.Width = double.NaN;
}
0 голосов
/ 29 мая 2010

Нет .. Полагаю, нет более элегантного решения

...