Expand
DependencyProperty Class

Represents a property that can be set through methods such as, styling, data binding, animation, and inheritance.

Namespace:  System.Windows
Assembly:  WindowsBase (in WindowsBase.dll)
XMLNS for XAML: http://schemas.microsoft.com/winfx/2006/xaml/presentation, http://schemas.microsoft.com/netfx/2007/xaml/presentation
Syntax

'Declaration

<TypeConverterAttribute("System.Windows.Markup.DependencyPropertyConverter, PresentationFramework, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, Custom=null")> _
Public NotInheritable Class DependencyProperty
<object property="dependencyPropertyName"/>
- or -
<object property="ownerType.dependencyPropertyName"/>
- or -
<object property="attachedPropertyOwnerType.attachedPropertyName"/>

XAML Values

dependencyPropertyName

A string that specifies the DependencyProperty.Name of the desired dependency property. This can be preceded by an XML namespace prefix if the property is not in the default XML namespace (for details, see XAML Namespaces and Namespace Mapping for WPF XAML.)

ownerType.dependencyPropertyName

A string that specifies an owner type of a dependency property, a dot (.), then the DependencyProperty.Name. ownerType can also be preceded by an XML namespace prefix. This usage is particular to late-bound styles and templates, where the owner of the dependency property must be specified for parsing context because the TargetType is not yet known. For more information, see Styling and Templating.

attachedPropertyOwnerType.attachedPropertyName

A string that specifies the owner of an attached property, a dot (.), then the attached property name. attachedPropertyOwnerType can also be preceded by an XML namespace prefix.

Remarks

A DependencyProperty supports the following capabilities in Windows Presentation Foundation (WPF):

  • The property can be set in a style. For more information, see Styling and Templating.

  • The property can be set through data binding. For more information about data binding dependency properties, see How to: Bind the Properties of Two Controls.

  • The property can be set with a dynamic resource reference. For more information, see Resources Overview.

  • The property can inherit its value automatically from a parent element in the element tree. For more information, see Property Value Inheritance.

  • The property can be animated. For more information, see Animation Overview.

  • The property can report when the previous value of the property has been changed and the property value can be coerced. For more information, see Dependency Property Callbacks and Validation.

  • The property reports information to WPF, such as whether changing a property value should require the layout system to recompose the visuals for an element.

  • The property receives support in the WPF Designer for Visual Studio. For example, the property can be edited in the Properties window.

To learn more about dependency properties, see Dependency Properties Overview. If you want properties on your custom types to support the capabilities in the preceding list, you should create a dependency property. To learn how to create custom dependency properties, see Custom Dependency Properties.

An attached property is a property that enables any object to report information to the type that defines the attached property. In WPF, any type that inherits from DependencyObject can use an attached property regardless of whether the type inherits from the type that defines the property. An attached property is a feature of the XAML language.  To set an attached property in XAML, use the ownerType.propertyName syntax. An example of an attached property is the DockPanel.Dock property. If you want to create a property that can be used on all DependencyObject types, then you should create an attached property. To learn more about attached properties, including how to create them, see Attached Properties Overview.

Examples

This example shows how to back a common language runtime (CLR) property with a DependencyProperty field, thus defining a dependency property. When you define your own properties and want them to support many aspects of Windows Presentation Foundation (WPF) functionality, including styles, data binding, inheritance, animation, and default values, you should implement them as a dependency property.

The following example first registers a dependency property by calling the Register method. The name of the identifier field that you use to store the name and characteristics of the dependency property must be the Name you chose for the dependency property as part of the Register call, appended by the literal string Property. For instance, if you register a dependency property with a Name of Location, then the identifier field that you define for the dependency property must be named LocationProperty.

In this example, the name of the dependency property and its CLR accessor is State; the identifier field is StateProperty; the type of the property is Boolean; and the type that registers the dependency property is MyStateControl.

If you fail to follow this naming pattern, designers might not report your property correctly, and certain aspects of property system style application might not behave as expected.

You can also specify default metadata for a dependency property. This example registers the default value of the State dependency property to be false.


  Public Class MyStateControl
	  Inherits ButtonBase
	Public Sub New()
		MyBase.New()
	End Sub
	Public Property State() As Boolean
	  Get
		  Return CType(Me.GetValue(StateProperty), Boolean)
	  End Get
	  Set(ByVal value As Boolean)
		  Me.SetValue(StateProperty, value)
	  End Set
	End Property
	Public Shared ReadOnly StateProperty As DependencyProperty = DependencyProperty.Register("State", GetType(Boolean), GetType(MyStateControl),New PropertyMetadata(False))
  End Class


For more information about how and why to implement a dependency property, as opposed to just backing a CLR property with a private field, see Dependency Properties Overview.

Inheritance Hierarchy

System.Object
  System.Windows.DependencyProperty
Thread Safety

Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.
Platforms

Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows Server 2008 (Server Core Role not supported), Windows Server 2008 R2 (Server Core Role not supported), Windows Server 2003 SP2

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.
Version Information

.NET Framework

Supported in: 4, 3.5, 3.0

.NET Framework Client Profile

Supported in: 4, 3.5 SP1
Community ContentAdd
Page view tracker