From this web page :
A strange approach to receiving notifications of changes in dependency properties includes the dynamic creation of both dependency properties and data bindings. If you are writing a class that descends from DependencyObject, you have access to an object that contains dependency properties, and you must notify it when one of these dependency properties changes, you can create the dependency property and the binding on the fly to give you the information you need .
ContentControl.Content is a dependency property.
source share