Vous parlez de 4 choses différentes ici:
- le style de dataGrid
- modèle de la DataGrid
- style de votre première colonne
- modèle de votre première colonne
alors soyons précis d'abord: en choisir un et s'y tenir, essayez de ne pas mélanger le style et le modèle (on peut contenir l'autre de toute façon)
maintenant, d'après ce que je comprends, vous êtes plus intéressé à faire un modèle pour votre première colonne que pour l'ensemble grille de données.
Il devrait être assez facile:
1) Tout d'abord, déclarer votre modèle de colonne (ou style) dans un dictionnaire de ressources (de préférence dans les ressources de votre application):
<Application.Resources>
<Template TargetType="DataGridTemplateColumn" x:Key="MyFirstColumnTemplate ">
...
</Template>
</Application.Resources>
2) puis, tout simplement l'appeler comme vous vouliez faire:
<DataGrid Style="{StaticResource MainGridStyle}">
<DataGrid.Columns>
<DataGridTemplateColumn Template="{StaticResource MyFirstColumnTemplate}"/>
...
</DataGrid.Columns>
<DataGrid>
EDIT:
dans le cas d'un DataGridTemplateColumn, comme vous avez seulement les propriétés CellTemplate et CellEditingTemplate disponibles, vous pouvez le faire comme suit:
<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>
Avertissement: Je ne suis pas sûr que ce soit un ControlTemplate ou un datatemplate pour la cellule (édition) modèle, essayez les deux et voir Wich un correspond à
Eh bien, ce semble tout à fait banal. Et si je veux déclarer ce "Modèle" dans un fichier de ressources/dictionnaire externe? En passant, mon VisualStudio se plaint qu'il n'y a pas de propriété Template dans DataGridTemplateColumn! – Fred
En effet, pour un DataGridTempalteColumn, vous n'avez que les propriétés CellTemplate et CellEditingTemplate disponibles. jetez un oeil là: http://msdn.microsoft.com/fr-fr/library/system.windows.controls.datagridtemplatecolumn_properties%28v=VS.95%29.aspx – David
Pour le CellTemplate, c'était clair pour moi. Mais pour DataGridTemplateColumn, c'est autre chose. Donc, en fait, il semble impossible de définir un "modèle de colonne réutilisable personnalisé"?!?! Étrange! – Fred