You're talking about 4 different things here:
- the dataGrid's style
- the DataGrid's template
- your first column's style
- your first column's template
so let's get precise first:
chose one and stick to it, try not not mix style and template (one can contain the other anyway)
now from what I understand, you're more interested in making a template for your first column than for the whole dataGrid.
It should be pretty easy:
1) first, declare your column's template (or style) in a resource dictionary (preferably in your application's resources):
<Application.Resources>
<Template TargetType="DataGridTemplateColumn" x:Key="MyFirstColumnTemplate ">
...
</Template>
</Application.Resources>
2) then, simply call it like you wanted to do:
<DataGrid Style="{StaticResource MainGridStyle}">
<DataGrid.Columns>
<DataGridTemplateColumn Template="{StaticResource MyFirstColumnTemplate}"/>
...
</DataGrid.Columns>
<DataGrid>
EDIT:
in the case of a dataGridTemplateColumn, as you only have the CellTemplate and CellEditingTemplate properties available, you can do as follow:
<Application.Resources>
<DataTemplate x:Key="CellTemplate">
...
</DataTemplate>
<DataTemplate x:Key="CellEdintingTemplate">
...
</DataTemplate>
</Application.Resources>
<DataGrid Style="{StaticResource MainGridStyle}">
<DataGrid.Columns>
<DataGridTemplateColumn CellTemplate="{StaticResource MyFirstColumnCellTemplate}" CellEdintingTemplate="{StaticResource MyFirstColumnCellEdintingTemplate}"/>
...
</DataGrid.Columns>
<DataGrid>
disclaimer : I'm not sure if it's a controlTemplate or a dataTemplate for the cell(Editing)Template, try both and see wich one fits