Binding is a powerful Silverlight/WPF concept allowing two or more properties on two objects to be tied together, so that when one of them changes, the other changes as well. One of the binding's properties is called source property and the other target property. Usually we assume that the target property changes when the source does, but if the binding mode is two-way, the opposite is also true, that is, a change in the source property will be triggered by a change in the target property. The target property should always be a dependency property while the source property can be a usual .NET one. More on bindings can be found at http://tinyurl.com/wpfbindings.
The XAML code presented in the previous subsection uses binding to bind the RotationAngle
dependency property of the SpinningControl
object to the Angle
property of the RotateTransform
object:
<RotateTransform Angle="{Binding Path=RotationAngle, Mode=OneWay, RelativeSource={RelativeSource Mode=TemplatedParent}}" />
In this case, the RotationAngle
property of the SpinningControl
object is the source property of the binding, while the Angle
property of the RotateTransform
object is its target property. The binding mode being set to OneWay
specifies that the target property changes whenever the source property does, but not vice versa. The RelativeSource
property of the binding, when set to TemplatedParent,
specifies that the binding's source property is chosen by the Path
property taken with respect to the control to which the template applies (in our case it is SpinningControl
).