什么是依赖属性?它有什么用途?

20

可能性:
什么是依赖属性?

什么是依赖属性?它与普通属性有何不同?依赖属性的目的是什么?为什么会使用它?在何时使用它?

请修正拼写。 - reinierpost
如果你搜索dependency-properties wpf,会有大量相关信息。 - Fredrik Mörk
1
有趣,竟然有人撤销了自动编辑。 - BoltClock
4个回答

15
依赖属性: 由DependencyProperty支持的属性。

依赖属性的目的是提供一种基于其他输入值计算属性值的方式。

这些其他输入值可能包括系统属性,例如主题和用户偏好,实时属性确定机制,例如数据绑定和动画/故事板,多次使用模板,如资源和样式,或通过与元素树中的其他元素之间的父子关系了解的值。

它具有以下功能:

  • 可以在样式中设置该属性。

  • 可以通过数据绑定设置该属性。

  • 可以使用动态资源引用设置该属性。

  • 该属性的值可以自动从元素树中的父元素继承。

  • 可以对该属性进行动画处理。

  • 该属性可以报告先前的属性值已更改并且可以强制执行属性值。

  • 该属性向WPF报告信息,例如更改属性值是否需要布局系统重新组合元素的可视化。

  • 该属性在Visual Studio的WPF设计器中获得支持。例如,可以在“属性”窗口中编辑该属性。

(内容摘自MSDN)


4

依赖属性将其值存储在类外部,因此可以将属性分配给对象而无需更改对象的类。它们还支持WPF中常见的一种情况,即一个对象可能具有非常多的属性,但只有很少的属性具有非默认值。依赖属性可以具有默认值,因此可以减少内存使用量。还有更多内容,请阅读MSDN上的依赖属性概述文章。


4
我认为MSDN文章可以为您提供更多信息。
从我所读的内容来看,依赖属性依赖于其他值。
依赖属性的目的是提供一种基于其他输入计算属性值的方法。这些其他输入可能包括系统属性(如主题和用户偏好),即时属性确定机制(如数据绑定和动画/故事板),多次使用的模板(如资源和样式)或通过元素树与其他元素存在父子关系而已知的值。此外,依赖属性还可以实现自包含验证、默认值、监视其他属性更改的回调以及基于潜在运行时信息强制执行属性值的系统。派生类还可以通过覆盖依赖属性元数据而不是覆盖现有属性的实际实现或创建新属性来更改某些特定属性的特性。

2

如果您谈论的是具有 Dependency 属性的属性(如 Microsoft.Practices.Unity 中定义的),

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

这个属性被Unity框架用于依赖注入(DI),基本上,属性值是由DI框架在运行时设置的,而不是直接在代码中设置的。

然而,在System.Runtime.CompilerServices中还定义了另一个Dependency属性。请您更新您的问题,说明您指的是哪一个。


不,我在谈论WPF/Silverlight中的依赖属性。 - Thiru G
啊,那我不确定。我会更新您的问题以突出这一点。 - RB.
为什么问题标记不是 WPF 呢? - Ash Burlaczenko
抱歉,我会在以后纠正的 :) - Thiru G

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接