The DependencyObject class enables Silverlight dependency property system services on its many derived classes. For an overview of the dependency property concept, see Dependency Properties Overview.
The property system's primary function is to compute the values of properties, and to provide system notification about values that have changed. Another key class that participates in the property system is DependencyProperty. DependencyProperty enables the registration of dependency properties into the property system, whereas DependencyObject as a base class enables objects to use and set the dependency properties.
DependencyObject services and characteristics include the following:
Dependency property hosting support.
Custom dependency property hosting support. You register a dependency property by calling the Register method, and storing the method's return value as a public static field in your DependencyObject class. Also, the ownerType parameter of Register must be the type of your DependencyObject.
Attached property hosting support.
Custom attached property hosting support. You register a dependency property for the attached property usage by calling the RegisterAttached method, and storing the method's return value as a public static field in your class.
Get and set utility methods for values of any dependency properties that exist on the DependencyObject.
Dispatcher APIs for advanced threading scenarios.
It is not typical to derive directly from DependencyObject for most application scenarios. Instead you might derive from a specific control, from one of the control base classes (ContentControl; Control; ItemsControl), from FrameworkElement, or from non-control classes that still participate in UI such as Panel or Grid. Deriving from DependencyObject might be appropriate if you are defining a business or data storage object where you want dependency properties to be active, or if you are creating a service support class that will own attached properties.
Although dependency properties can be the target of a data binding, the full support for data binding is not implemented on DependencyObject. To be the target of a data binding, a property must be a dependency property on a FrameworkElement derived classes. For more information, see Data Binding or Dependency Properties Overview.