Dependency property concepts are covered in detail in the topic Dependency Properties Overview.
Instances of DependencyProperty are often referenced in the documentation as dependency property identifiers. Their function is to serve as a way to refer to a dependency property that was registered to a particular DependencyObject owner type. When the owner type registers the property, the owner type exposes the DependencyProperty instance as the identifier. The owner DependencyObject provides the property store for the dependency property as it participates in the Silverlight property system.
When working with a dependency property in code, you might use a DependencyProperty identifiers as input for calls to property system methods such as SetValue. However, in most cases, getting or setting a dependency property is simpler by getting or setting the "wrapper" CLR property that generally exposes the dependency property to XAML usage and to the CLR type system. For details, see "Dependency Properties Back CLR Properties" section of Dependency Properties Overview.
DependencyProperty supports a native conversion for XAML attribute syntax for filling values, which is used when a Setter specifies its Property value. This conversion uses an ownerTypeName.propertyName form for the input string.
A related type that can also be used to specify a property by name and is required by certain data and animation APIs is PropertyPath. A PropertyPath can be used to reference any CLR property (that property can also be a dependency property, but does not have to be). A PropertyPath can be specified in XAML, and can be used to specify a property within an object hierarchy. For more information, see Property Path Syntax.
The Silverlight property system supports its implementation of the XAML attached property language feature with DependencyProperty identifiers and property storage on a DependencyObject. For details, see Attached Properties Overview.
Custom Dependency Properties
If you want properties on your custom types to support value expressions, data binding, or animation, you should back these CLR properties with a dependency property following these guidelines:
Register a dependency property using the Register method, which returns a DependencyProperty. You should store as an accessible static read-only field in your class. By convention, the name of this DependencyProperty identifier field should end with Property.
During registration, you can provide PropertyMetadata for the property to further define the property's behaviors.
Provide CLR get and set accessors for the property.
For more information on custom dependency properties for custom DependencyObject classes, including examples and procedures, see Custom Dependency Objects and Dependency Properties.