【问题标题】:Regarding Dependency Properties [duplicate]关于依赖属性[重复]
【发布时间】:2011-07-05 06:37:43
【问题描述】:

可能重复:
When to use Dependency Properties

我阅读了有关 WPF 依赖属性的信息,但无法很好地理解什么是依赖属性以及为什么需要它。什么时候使用依赖属性我的意思是依赖属性应该去什么样的情况。

这里是依赖属性的示例代码

public static readonly DependencyProperty IsSpinningProperty = 
   DependencyProperty.Register(
   "IsSpinning", typeof(Boolean),

);

public bool IsSpinning 
{
 get { return (bool)GetValue(IsSpinningProperty); }
 set { SetValue(IsSpinningProperty, value); }
}

请通过简单的示例代码帮助我理解依赖属性,并向我展示如何使应用程序受益。什么时候需要等等。

谢谢

【问题讨论】:

  • 你试图一口气问太多问题,而且几乎所有问题都已经被其他问题回答了。例如右侧的“相关”问题列已经有“为什么依赖属性”和“何时使用依赖属性”

标签: c# .net wpf


【解决方案1】:

简单地说,当它涉及数据绑定时(可能在某些 XAML 代码中),或者如果您希望在 XAML 中设置该属性,则使用依赖属性。与常规 C# 属性相比,它的开销很大,因此如果您不需要它,请坚持使用常规属性。

【讨论】:

  • 我不确定我是否同意“开销”声明。依赖属性旨在最大限度地减少属性系统的内存开销,从而可以实例化大型对象树,同时使用比传统属性更少的内存。它们确实有概念上的开销,并且需要更多的代码来实现,但在性能方面,我认为它们不是问题。当您希望属性成为绑定的发起者时,我还将限定依赖属性是必需的,这可以通过在 XAML 中声明绑定来完成。
  • 我强烈建议您重新阅读依赖属性的实现方式,然后将它们与常规属性的工作方式进行比较。依赖属性旨在“最小化”开销。常规属性没有开销。整个通知结构并非没有依赖属性的成本。至于您的第二点,我提到当属性涉及数据绑定时使用它们;因为我的第二个论点表明它们在声明中的使用以“或”开头,前者暗示该属性必须是绑定的发起者。
【解决方案2】:

以下链接提供了一个很好的概述

  • 依赖属性与普通 CLR 属性有何不同,以及
  • 依赖属性提供了哪些优势。

MSDN:Dependency Properties Overview

我建议您尝试通读这篇文章,然后返回更具体的问题,如果有什么特别的地方仍然让您感到困惑。

【讨论】:

  • 没有找到 1) 依赖属性与普通 CLR 属性有何不同 2) 依赖属性提供哪些优势的链接。
  • @user728750:链接位于短语“依赖属性概述”后面。 “依赖属性提供的属性功能”部分显示了依赖属性提供了哪些功能,而“普通”CLR 属性没有这些功能。
猜你喜欢
  • 1970-01-01
  • 2015-09-15
  • 1970-01-01
  • 2017-12-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-27
相关资源
最近更新 更多