Permalink
Fetching contributors…
Cannot retrieve contributors at this time
41 lines (33 sloc) 3.25 KB
title ms.custom ms.date ms.prod ms.reviewer ms.suite ms.technology ms.tgt_pltfrm ms.topic helpviewer_keywords ms.assetid caps.latest.revision author ms.author manager
How to: Implement a Dependency Property
03/30/2017
.net-framework
dotnet-wpf
article
dependency properties, backing properties with
properties, backing with dependency properties
855fd6d7-19ac-493c-bf5e-2f40b57cdc92
19
dotnet-bot
dotnetcontent
wpickett

How to: Implement a Dependency Property

This example shows how to back a [!INCLUDETLA#tla_clr] property with a xref:System.Windows.DependencyProperty field, thus defining a dependency property. When you define your own properties and want them to support many aspects of [!INCLUDETLA#tla_winclient] functionality, including styles, data binding, inheritance, animation, and default values, you should implement them as a dependency property.

Example

The following example first registers a dependency property by calling the xref:System.Windows.DependencyProperty.Register%2A method. The name of the identifier field that you use to store the name and characteristics of the dependency property must be the xref:System.Windows.DependencyProperty.Name%2A you chose for the dependency property as part of the xref:System.Windows.DependencyProperty.Register%2A call, appended by the literal string Property. For instance, if you register a dependency property with a xref:System.Windows.DependencyProperty.Name%2A 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 [!INCLUDETLA2#tla_clr] accessor is State; the identifier field is StateProperty; the type of the property is xref:System.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.

[!code-csharpPropertySystemEsoterics#MyStateControl] [!code-vbPropertySystemEsoterics#MyStateControl]

For more information about how and why to implement a dependency property, as opposed to just backing a [!INCLUDETLA2#tla_clr] property with a private field, see Dependency Properties Overview.

See Also

Dependency Properties Overview
How-to Topics