Represents an object that participates in the dependency property system. DependencyObject is the immediate base class of many important UI-related classes, such as UIElement, Geometry, FrameworkTemplate, Style, and ResourceDictionary. For more info on how DependencyObject supports dependency properties, see Dependency properties overview.
The DependencyObject class has these types of members:
The DependencyObject class has these constructors.
|DependencyObject||Provides base class initialization behavior for DependencyObject derived classes.|
The DependencyObject class has these methods. It also inherits methods from the Object class.
|ClearValue||Clears the local value of a dependency property.|
|GetAnimationBaseValue||Returns any base value established for a dependency property, which would apply in cases where an animation is not active.|
|GetValue||Returns the current effective value of a dependency property from a DependencyObject.|
|ReadLocalValue||Returns the local value of a dependency property, if a local value is set.|
|SetValue||Sets the local value of a dependency property on a DependencyObject.|
The DependencyObject class has these properties.
|Read-only||Gets the CoreDispatcher that this object is associated with.|
The DependencyObject class enables dependency property system services on its many derived classes. For more info about the dependency property concept, see Dependency properties overview.
The dependency 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 dependency 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.
Here are some notable services and characteristics that DependencyObject provides or supports:
- 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 property in your DependencyObject class.
- 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 property in your class.
- Get and Set utility methods for values of any dependency properties that exist on a DependencyObject.
- Additional utility for examining metadata or property values (for example GetAnimationBaseValue).
- The Dispatcher property for advanced threading scenarios. This provides a reference to a CoreDispatcher object that can be used to run code on a worker thread; see "DependencyObject and threading" section below.
- Basic data binding and styling support, by enabling properties to be set as expressions to be evaluated at some later point in an object's lifetime. These concepts are explained in more detail in Dependency properties overview. See also Data binding overview.
All DependencyObject instances must be created on the UI thread which is associated with the current Window that is shown by a Windows Store app using C++, C#, or Visual Basic. Although each DependencyObject must be created on the main UI thread, the objects can be accessed using a dispatcher reference from other threads, by calling Dispatcher.
The threading aspects of DependencyObject are relevant because it generally means that only code that runs on the UI thread can change or even read the value of a dependency property. Threading issues can usually be avoided in typical UI code that makes correct use of async patterns and background worker threads. You typically only run into DependencyObject-related threading issues if you are defining your own DependencyObject types and you attempt to use them for data sources or other scenarios where a DependencyObject isn't necessarily appropriate.
DependencyObject is the parent class for several immediately derived classes that are all fundamental to the programming model you use for a Windows Store app using C++, C#, or Visual Basic. Here are some of the notable derived classes:
- UIElement: The base class for most visual objects that can process input in the UI. FrameworkElement is further in this hierarchy, as is Control, so there are hundreds of controls and other classes in the Windows Runtime that all have the UIElement class in their class hierarchies.
- XAML style system support classes: FrameworkTemplate (parent of ControlTemplate, DataTemplate, ItemsPanelTemplate), Style, SetterBase (parent of Setter), ToolTipTemplateSettings and other *TemplateSettings.
- Visual state model: Transition, VisualState, VisualStateGroup, VisualStateManager, VisualTransition.
- Data binding support: BindingBase (parent of Binding), CollectionViewSource, PropertyPath, RelativeSource.
- Storyboarded animations: Timeline (parent of Storyboard, typed animations, theme animations), typed keyframes (like ColorKeyFrame), KeySpline, EasingFunctionBase.
- XAML graphics and rendering primitives: Brush, Geometry, GeneralTransform, GradientStop, PathFigure, PathSegment, Projection.
- Imaging and render surface interop: ImageSource (parent of BitmapSource, RenderTargetBitmap, SurfaceImageSource and others).
- Window: represents the main app window.
- FlyoutBase (parent of Flyout and MenuFlyout).
- ResourceDictionary: defines keyed resources in XAML.
- TextElement: parent of Block and Inline, these in turn are base classes for text elements used for TextBlock content or the rich text elements.
- AutomationPeer: base class for Microsoft UI Automation peers that represent XAML controls to a UI Automation listener. Also, IRawElementProviderSimple.
- Miscellaneous: CacheMode, ColumnDefinition, DependencyObjectCollection, InputScope, InputScopeName, PageStackEntry, PrintDocument, RowDefinition, TimelineMarker, TriggerAction, TriggerBase.
This example defines a class that derives from DependencyObject, and defines an attached property along with the identifier field. The scenario for this class is that it is a service class that declares an attached property that other UI elements can set in XAML The service potentially acts on the attached property values on those UI elements at run time.
Minimum supported client
|Windows 8 [Windows Store apps only]|
Minimum supported server
|Windows Server 2012 [Windows Store apps only]|
Minimum supported phone
|Windows Phone 8.1 [Windows Runtime apps only]|
- Dependency properties overview
- Custom dependency properties
- Custom attached properties
- Attached properties overview