Pour modifier le template d'un contrôle en SilverLight2, cela ressemble beaucoup à WPF mais il faut être plus strict.
En effet, si l'on veut garder le comportement du contrôle de base, il faut faire apparaître des éléments obligatoires qui sont référencés ici en fonction du contrôle.
Prenons par exemple un changement de template pour un RepeatButton. Ce dernier (comme une grosse majorité d'ailleurs) attend de trouver un élément nommé "RootElement".
Si on oublie de le préciser, le template s'appliquera correctement MAIS le comportement du contrôle (par exemple ici la gestion de la répétition de l'événement Click) ne sera pas forcément pris en compte.
Exemple:
<RepeatButton Content="Clic Me" Click="butTurnRight_Click" Interval="20">
<RepeatButton.Template>
<ControlTemplate TargetType="RepeatButton">
<Grid x:Name="RootElement">
<Path HorizontalAlignment="Center" VerticalAlignment="Center" Data="M0,0 L10,10 0,20"/>
</Grid>
</ControlTemplate>
</RepeatButton.Template>
</RepeatButton>
On peut donc noter deux choses importantes (que l'on pouvait omettre en WPF):
- TargetType="RepeatButton"
- x:Name="RootElement"
Et voila....
Silverlight