DataGrid questions

1) The text in the grid rows appears to be vertically aligned to the top of the cells. Any way I can style it to align to the centre of the cells - is the text rendered using TextBlock? Same question for checkboxes...
2) How can I number each row - I guess this involves changing the style of the RowHeader, but I don't see how to introduce a changing index?
3) How can I embed a control into the column header? Do I use the ColumnHeaderStyle? My goal would be to then update the appearance of all cells in the column when the embedded header control changes state?