代码之家  ›  专栏  ›  技术社区  ›  Sander Rijken

依赖属性。注册()或。注册附件()

  •  43
  • Sander Rijken  · 技术社区  · 16 年前

    4 回复  |  直到 16 年前
        1
  •  48
  •   Denis Troller    16 年前

    事实上,它们作为普通属性(带有get和set访问器)公开在非类型化的DependencyObject之上。设定值/获取值。

    另一方面,附加属性是不同的。它们被视为一个可扩展的系统。如果你曾经在Windows窗体中使用过扩展器,它们有点相似。 您将它们声明为一个类型的一部分,以便在另一个类型上使用。

    它们被大量用于与布局相关的信息。例如,Canvas需要左/上坐标,Grid需要行和列,DockPanel需要Dock信息等。如果所有这些都必须在每个可以分配的控制权上声明,那将是一团糟。因此,它们在相应的面板上声明,但在任何控件上使用。

    如果需要,您可以使用相同的东西将任何信息附加到DependencyObject。例如,只需声明一条信息,您就可以在xaml中设置该信息,以便以后在现有类的样式中使用,这会很方便。

        2
  •  9
  •   Nicholas Armstrong    16 年前

    DependencyProperty之间的区别。Register()和DependencyProperty。RegisterAttached()就是这样。Register()用于在DependencyObject上注册“常规”依赖属性,而。RegisterAttached()用于设置“附加”依赖属性。

    are on MSDN .

        3
  •  3
  •   Community Mohan Dere    8 年前

    使用Register或RegisterAttached注册的属性可以通过SetValue和GetValue附加到任何DependencyObject。但是,如果将使用Register注册的属性附加到ownerType以外类型的对象,则不会使用其元数据(默认值除外)。这意味着“继承”或“影响度量”等属性将不适用于这些属性。如果您对附加属性的元数据感兴趣,则应使用RegisterAttached。

    有关详细信息,请参阅我对类似问题的回答: Difference between Attached and non-Attached Dependency Properties in Silverlight