I think the simplest thing to do is to create a customcontrol then use it like this:
<DataGridTemplateColumn><DataGridTemplateColumn.CellTemplate><DataTemplate><controls:CustomColumn Header="Name" Binding="{Binding Name}" /></DataTemplate></DataGridTemplateColumn.CellTemplate></DataGridTemplateColumn>
I did something similar yesterday, and it works pretty well