What is a dependency property? What is its use? [duplicate]

走远了吗. 提交于 2019-11-30 17:14:12

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)

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.

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.

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.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!