Вы можете использовать этот подход http://www.codeproject.com/KB/WPF/MVVM_DataGrid.aspx?msg=3241301
По сути, вы создаете список, который будет обрабатывать нумерацию для вас, пока объект T реализует ISequenceObject.
Если вы хотеличтобы пойти в другом направлении, вы можете посмотреть на обработку события LoadingRow и просто добавить 1 к известному DataColumn.Это не нарушило бы концепцию MVVM, так как нумерованный столбец не является частью бизнес-логики, но является частью презентации.
Чтобы сделать Numbered DataGrid многоразовым, вы также можете наследовать от DataGrid и создать свой собственный Numbered.DataGrid.