internal void ApplyColumnSettings(List <ColumnInfo> newColumns) { GridViewColumnCollection columns = (lstCatalogMods.View as GridView).Columns; for (int i = 0; i < newColumns.Count; i++) { // get the current index of the column int colIndex = columns.ToList().FindIndex(c => ColumnTranslations[((c.Header as GridViewColumnHeader).Content as string)] == newColumns[i].Name); // apply the new width if the column does not auto resize if (!newColumns[i].AutoResize) { columns[colIndex].Width = newColumns[i].Width; } // move the column to expected index columns.Move(colIndex, i); } RecalculateColumnWidths(); // call this to have auto resize columns recalculate }