2009-08-06 102 views

回答

65

附加属性是一种依赖属性。区别在于它们如何使用。

对于附加属性,该属性在与其使用的类不同的类上定义。这通常用于布局。很好的例子是Panel.ZIndex或Grid.Row - 你将它应用于一个控件(即:Button),但它实际上是在Panel或Grid中定义的。该属性“附加”到按钮的实例。

例如,这允许容器创建可以在任何UI元素上使用的属性。

至于实现差异 - 基本上只是在定义属性时使用Register vs. RegisterAttached。

+7

但究竟有什么区别?从我看到的你可以通过代码附加一个不可附加属性到另一个(我认为这在XAML中被阻塞了。)也许这是区别? – MarqueIV 2011-12-15 09:45:10

5

附加属性基本上是指容器元素。如果你有一个网格,并且你有grid.row现在这被认为是一个网格元素的附加属性。你也可以在texbox中使用这个属性,button在网格中设置它的位置。

依赖属性就像属性基本上属于某个其他类,并在其他类中使用。 例如:像你有一个矩形 这里的高度和宽度是矩形的常规属性,但左边和顶部是它属于Canvass类的依赖属性。

-2

附加属性是一种特殊的DependencyProperties。它们允许您将值附加到不知道该值的任何对象上。 这个概念的一个很好的例子是布局面板。每个布局面板需要不同的数据来对齐其子元素。 Canvas需要Top和Left,DockPanel需要Dock等。由于您可以编写自己的布局面板,因此列表是无限的。所以你看,不可能在所有WPF控件上拥有所有这些属性。 该解决方案是附加属性。它们由需要来自另一个控件的数据的控件在特定上下文中定义。例如,由父布局面板对齐的元素。

0

我认为你可以在类中定义附属属性,或者你可以在另一个类中定义它。我们总是可以使用附加属性来扩展标准的微软控件。但是依赖属性,你可以在你自己的自定义控件中定义它。例如您可以从标准控件继承控件,并在您自己的控件中定义依赖项属性并使用它。这相当于定义一个附加属性,并在标准控件中使用此附加属性。

相关问题