XamDataGrid Индекс позиции столбца: Field.Index или Field.ActualPosition.Column - PullRequest
5 голосов
/ 20 октября 2011

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

Я обнаружил, что могу получить заданный индекс положения столбца:

var fieldsLayout = grid.FieldLayouts[0];
var columnField = fieldsLayout.Fields.Single(f => f.Name == "Column Name");
int columnIndex = ... see below
  • columnField.Index - если пользователь не изменил начальный порядок столбцов
  • columnField.ActualPosition.Column - Если пользователь изменил начальный порядок столбцов

Вопрос в том, как узнать, изменил ли пользователь начальный порядок столбцов?

Ответы [ 2 ]

4 голосов
/ 21 октября 2011

Во время исследования я обнаружил, что на начальном этапе, когда порядок столбцов еще не был изменен, field.ActivePosition.Column для каждого столбца составляет 0 или == field.Index, Итак, введя следующий флаг:

bool initialOrderChanged = fieldsLayout.Fields.Any(f => 
                                       f.ActualPosition.Column != 0 
                                       && 
                                       f.ActualPosition.Column != f.Index);

Я могу получить правильный порядок расположения столбцов следующим образом:

 int position = initialOrderChanged
                      ? field.ActualPosition.Column
                      : field.Index,
1 голос
/ 20 октября 2011

Сохраните начальный список столбцов и сравните исходный список столбцов с фактическим списком. Если есть какая-либо разница в порядке, порядок столбцов был изменен.

...