Сила изменяет размер столбцов GridView в ListView

foreach f in $BASE/**/*.x(N) достаточно. ** уже соответствует 0 или более каталогов, поэтому шаблон уже соответствует $BASE/*.x.

17
задан Dave Clemmer 16 June 2013 в 00:45
поделиться

3 ответа

Вы можете измерить самую длинную строку в пикселях, а затем соответствующим образом отрегулировать ширину столбца:

Graphics graphics = this.CreateGraphics();
SizeF textSize = graphics.MeasureString("How long am I?", this.Font);

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

-1
ответ дан 30 November 2019 в 12:01
поделиться

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

public void AutoSizeColumns()
{
    GridView gv = listView1.View as GridView;
    if (gv != null)
    {
        foreach (var c in gv.Columns)
        {
            // Code below was found in GridViewColumnHeader.OnGripperDoubleClicked() event handler (using Reflector)
            // i.e. it is the same code that is executed when the gripper is double clicked
            if (double.IsNaN(c.Width))
            {
                c.Width = c.ActualWidth;
            }
            c.Width = double.NaN;
        }
    }
}
29
ответ дан 30 November 2019 в 12:01
поделиться

Нет способа привязать к ActualWidth столбца? Что-то вроде:

<GridViewColumn x:Name="column1" Width="{Binding ElementName=column1, Path=ActualWidth}" />

Я пробовал это, и похоже, это работает только в первый раз. Нет ошибки привязки.

1
ответ дан 30 November 2019 в 12:01
поделиться
Другие вопросы по тегам:

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