[Silverlight 4] Comment mettre, par code, du binding sur un DependencyObject ?
Depuis Silverlight 4, l’une des nouveautés au niveau du binding concerne la possibilité de l’appliquer directement au niveau des DependencyObjects et non plus seulement aux FrameworkElements.
Concrètement, cela signifie qu’il est maintenant possible d’écrire ce genre ce code:
1: <Rectangle Fill="Red"
2: x:Name="rect"
3: Height="50"
4: Width="100"
5: RenderTransformOrigin="0.5,0.5"
6: Grid.Row="0">
7: <Rectangle.RenderTransform>
8: <RotateTransform Angle="{Binding ElementName=slider, Path=Value}" />
9: </Rectangle.RenderTransform>
10: </Rectangle>
11:
12: <Slider x:Name="slider"
13: Width="100"
14: Grid.Row="1"
15: Minimum="0"
16: Maximum="180"
17: Value="0" />
Cependant, on peut vouloir réaliser le même genre d’opérations mais directement par code. Traditionnellement, pour faire cela, il faut appeler la méthode SetBinding de l’objet que l’on souhaite binder. Le problème, c’est que les DependencyObjects ne proposent pas cette méthode:
Si l’on souhaite faire son binding par code, il est nécessaire de passer par la méthode SetBinding de la classe BindingOperations:
Une petit tour dans Reflector nous apprend qu’au final, c’est la même chose car la méthode SetBinding, de FrameworkElement, ne fait qu’appeler la méthode SetBinding de BindingOperations:
Tout simple mais bon à savoir 
A+
Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :