What is a dependency property? What is its use?

28,187

Solution 1

Dependency property: A property that is backed by a DependencyProperty.

The purpose of dependency properties is to provide a way to compute the value of a property based on the value of other inputs.

These other inputs might include system properties such as themes and user preference, just-in-time property determination mechanisms such as data binding and animations/storyboards, multiple-use templates such as resources and styles, or values known through parent-child relationships with other elements in the element tree.

It has Following capabilities:

  • The property can be set in a style.

  • The property can be set through data binding.

  • The property can be set with a dynamic resource reference.

  • The property can inherit its value automatically from a parent element in the element tree.

  • The property can be animated.

  • The property can report when the previous value of the property has been changed and the property value can be coerced.

  • 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.

(Content taken from MSDN)

Solution 2

Dependency properties store their values outside the class, so properties can be assigned to an object without having to change the object's class. They also support a situation common in WPF where an object may have very many properties, but only a few have non-default values. Dependency properties can have default values, so this reduces memory usage. There is lots more, read the article: Dependency Properties Overview on MSDN.

Solution 3

I think the MSDN article can give you more information.

From what I read is that a Dependency Property relies on other values.

The purpose of dependency properties is to provide a way to compute the value of a property based on the value of other inputs. These other inputs might include system properties such as themes and user preference, just-in-time property determination mechanisms such as data binding and animations/storyboards, multiple-use templates such as resources and styles, or values known through parent-child relationships with other elements in the element tree. In addition, a dependency property can be implemented to provide self-contained validation, default values, callbacks that monitor changes to other properties, and a system that can coerce property values based on potentially runtime information. Derived classes can also change some specific characteristics of an existing property by overriding dependency property metadata, rather than overriding the actual implementation of existing properties or creating new properties.

Solution 4

If you are talking about a property with a Dependency attribute (as defined in Microsoft.Practices.Unity)

[Dependency]
public string MyProperty { get; set; }

Then this is used for dependency injection (DI) by the Unity framework. Basically, the property value is set at runtime by the DI framework, rather than being set directly in your code.

However, there is another Dependency attribute defined in System.Runtime.CompilerServices. Please could you update your question with which one you mean.

Share:
28,187
Thiru G
Author by

Thiru G

Software Engineer.

Updated on October 12, 2020

Comments

  • Thiru G
    Thiru G over 3 years

    Possiblity:
    What is a dependency property?

    What is a dependency property? How does it differ from a normal property? What is the purpose of dependency properties? And why it is used, when it is used?

  • Thiru G
    Thiru G over 13 years
    No I am talking about dependancy property in WPF/Silverlight
  • Maurício
    Maurício over 13 years
    Ah, then I'm not sure. I would update your question to highlight this.
  • Ash Burlaczenko
    Ash Burlaczenko over 13 years
    Why isn't the question marks as wpf then?
  • Thiru G
    Thiru G over 13 years
    Sorry. Sure I will correct in future :-)