Я предполагаю, что у вас есть проблема при изменении DisplayIndex столбцов в DataGrid из события Page Loaded, так как они еще не были созданы на данный момент. Вы не говорите, но я предполагаю, что вы получаете DataGrid для автоматического создания ваших столбцов, иначе вы можете просто установить DisplayIndex в своем XAML при определении столбцов DataGrid.
Когда DataGrid генерирует Столбцы, он запускает событие AutoGeneratingColumn для каждого Столбца, позволяя вам изменять его свойства. Это немного грубо, но одним из решений может быть установка DisplayIndex в обработчике для этого события, используя PropertyName, для которого он создает столбец.
private void grid_AutoGeneratingColumn(object sender, DataGridAutoGeneratingColumnEventArgs e)
{
switch (e.PropertyName)
{
case "Name":
e.Column.DisplayIndex = 1;
break;
case "Age":
e.Column.DisplayIndex = 0;
break;
}
}