Übersicht über angefügte EigenschaftenAttached Properties Overview

Eine angefügte Eigenschaft ist ein von XAML definiertes Konzept.An attached property is a concept defined by XAML. Eine angefügte Eigenschaft ist für die Verwendung als Typ einer globalen Eigenschaft vorgesehen, der in jedem Objekt festgelegt werden kann.An attached property is intended to be used as a type of global property that is settable on any object. In Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF) werden angefügte Eigenschaften in der Regel als eine spezielle Form der Abhängigkeitseigenschaft definiert, die nicht die herkömmliche Eigenschaft „Wrapper“ aufweist.In Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF), attached properties are typically defined as a specialized form of dependency property that does not have the conventional property "wrapper".

VoraussetzungPrerequisites

In diesem Thema wird davon ausgegangen, dass Sie Abhängigkeitseigenschaften aus Sicht eines Consumers vorhandener Abhängigkeitseigenschaften von Klassen der Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF) verstehen und die Übersicht über Abhängigkeitseigenschaften gelesen haben.This topic assumes that you understand dependency properties from the perspective of a consumer of existing dependency properties on Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF) classes, and have read the Dependency Properties Overview. Um den Beispielen in diesem Thema zu folgen, sollten Sie sich auch mit XAML vertraut machen und wissen, wie WPF-Anwendungen geschrieben werden.To follow the examples in this topic, you should also understand XAML and know how to write WPF applications.

Verwendungs Gründe für angefügte EigenschaftenWhy Use Attached Properties

Ein Zweck einer angefügten Eigenschaft ist die Berechtigung für verschiedene untergeordnete Elemente, eindeutige Werte für eine Eigenschaft anzugeben, die eigentlich in einem übergeordneten Element definiert ist.One purpose of an attached property is to allow different child elements to specify unique values for a property that is actually defined in a parent element. Eine bestimmte Anwendung dieses Szenario: Untergeordnete Elemente informieren übergeordnete Element, wie diese im Benutzeroberfläche (User Interface, UI)user interface (UI) angezeigt werden sollen.A specific application of this scenario is having child elements inform the parent element of how they are to be presented in the Benutzeroberfläche (User Interface, UI)user interface (UI). Ein Beispiel ist die DockPanel.Dock -Eigenschaft.One example is the DockPanel.Dock property. Die DockPanel.Dock -Eigenschaft wird als angefügte Eigenschaft erstellt, da Sie auf Elemente festgelegt werden soll, die in einem DockPanelenthalten sind, und DockPanel nicht auf sich selbst.The DockPanel.Dock property is created as an attached property because it is designed to be set on elements that are contained within a DockPanel, rather than on DockPanel itself. Die DockPanel -Klasse definiert das DependencyProperty statische Feld DockPropertymit dem Namen und stellt GetDock dann SetDock die-Methode und die-Methode als öffentliche Accessoren für die angefügte-Eigenschaft bereit.The DockPanel class defines the static DependencyProperty field named DockProperty, and then provides the GetDock and SetDock methods as public accessors for the attached property.

Angefügte Eigenschaften in XAMLAttached Properties in XAML

In XAML legen Sie angefügte Eigenschaften mithilfe der Syntax AttachedPropertyProvider.PropertyName fest.In XAML, you set attached properties by using the syntax AttachedPropertyProvider.PropertyName

Im folgenden finden Sie ein Beispiel für die Festlegung DockPanel.Dock von in XAML:The following is an example of how you can set DockPanel.Dock in XAML:

<DockPanel>
  <CheckBox DockPanel.Dock="Top">Hello</CheckBox>
</DockPanel>

Beachten Sie, dass die Verwendung einer statischen Eigenschaft etwas ähnlich ist. Sie verweisen immer auf den DockPanel Typ, der die angefügte Eigenschaft besitzt und registriert, anstatt auf eine durch den Namen angegebene Instanz zu verweisen.Note that the usage is somewhat similar to a static property; you always reference the type DockPanel that owns and registers the attached property, rather than referring to any instance specified by name.

Da eine angefügte Eigenschaft in XAML ein Attribut ist, das Sie im Markup festlegen, besitzt außerdem nur der Mengenvorgang Relevanz.Also, because an attached property in XAML is an attribute that you set in markup, only the set operation has any relevance. Sie können eine Eigenschaft in XAML nicht direkt abrufen, obwohl einige indirekte Mechanismen zum Vergleichen von Werten vorhanden sind, wie z.B. Trigger in Formaten (weitere Informationen finden Sie unter Erstellen von Formaten und Vorlagen).You cannot directly get a property in XAML, although there are some indirect mechanisms for comparing values, such as triggers in styles (for details, see Styling and Templating).

Implementierung von angefügten Eigenschaften in WPFAttached Property Implementation in WPF

In Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF)werden die meisten angefügten Eigenschaften, die auf WPF-Typen im Zusammenhang mit der UI-Darstellung vorhanden sind, als Abhängigkeits Eigenschaften implementiert.In Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF), most of the attached properties that exist on WPF types that are related to UI presentation are implemented as dependency properties. Angefügte Eigenschaften sind ein XAML-Konzept, wohingegen Abhängigkeits Eigenschaften ein WPF-Konzept sind.Attached properties are a XAML concept, whereas dependency properties are a WPF concept. Da WPF-Eigenschaften Abhängigkeits Eigenschaften sind, unterstützen Sie Abhängigkeits Eigenschafts Konzepte wie z. b. Eigenschafts Metadaten und Standardwerte aus diesen Eigenschafts Metadaten.Because WPF attached properties are dependency properties, they support dependency property concepts such as property metadata, and default values from that property metadata.

Verwendung angefügter Eigenschaften durch den besitzenden TypHow Attached Properties Are Used by the Owning Type

Obwohl angefügte Eigenschaften für jedes beliebige Objekt festgelegt werden können, bedeutet dies nicht automatisch, dass die Eigenschaft ein reales Ergebnis erzeugt, oder der Wert jemals von einem anderen Objekt verwendet wird.Although attached properties are settable on any object, that does not automatically mean that setting the property will produce a tangible result, or that the value will ever be used by another object. Im Allgemeinen werden angefügte Eigenschaften vorgesehen, damit Objekte, die aus einer Vielzahl von möglichen Klassenhierarchien oder logischen Beziehungen stammen, dem Typ, der die angefügte Eigenschaft definiert, allgemeine Informationen melden können.Generally, attached properties are intended so that objects coming from a wide variety of possible class hierarchies or logical relationships can each report common information to the type that defines the attached property. Der Typ, der die angefügte Eigenschaft definiert, folgt in der Regel einem dieser Modelle:The type that defines the attached property typically follows one of these models:

  • Der Typ, der die angefügte Eigenschaft definiert, ist so konzipiert, dass er das übergeordnete Element der Elemente sein kann, das Werte für die angefügte Eigenschaft festlegen wird.The type that defines the attached property is designed so that it can be the parent element of the elements that will set values for the attached property. Der Typ durchläuft dann seine untergeordneten Objekte durch die interne Logik auf der Grundlage der Objektstruktur, ruft die Werte ab und fungiert auf irgendeine Weise für diese Werte.The type then iterates its child objects through internal logic against some object tree structure, obtains the values, and acts on those values in some manner.

  • Der Typ, der die angefügte Eigenschaft definiert, wird als untergeordnetes Element für verschiedene mögliche übergeordnete Elemente und Inhaltsmodelle verwendet werden.The type that defines the attached property will be used as the child element for a variety of possible parent elements and content models.

  • Der Typ, der die angefügte Eigenschaft definiert, stellt einen Dienst dar.The type that defines the attached property represents a service. Andere Typen legen Werte für die angefügte Eigenschaft fest.Other types set values for the attached property. Wenn das Element, das die Eigenschaft festlegt, im Kontext des Dienstes ausgewertet wird, werden über die interne Logik der Dienstklasse die angefügten Eigenschaftswerte abgerufen.Then, when the element that set the property is evaluated in the context of the service, the attached property values are obtained through internal logic of the service class.

Ein Beispiel für eine übergeordnete definierte angefügte EigenschaftAn Example of a Parent-Defined Attached Property

Das typische Szenario, in dem WPF eine angefügte Eigenschaft definiert, ist, wenn ein übergeordnetes Element eine Auflistung untergeordneter Elemente unterstützt und außerdem ein Verhalten implementiert, bei dem die Besonderheiten des Verhaltens für jedes untergeordnete Element einzeln gemeldet werden.The most typical scenario where WPF defines an attached property is when a parent element supports a child element collection, and also implements a behavior where the specifics of the behavior are reported individually for each child element.

DockPaneldefiniert die DockPanel.Dock angefügte-Eigenschaft DockPanel und verfügt über Code auf Klassenebene als Teil der MeasureOverride Renderinglogik ( ArrangeOverrideinsbesondere und).DockPanel defines the DockPanel.Dock attached property, and DockPanel has class-level code as part of its rendering logic (specifically, MeasureOverride and ArrangeOverride). Eine DockPanel -Instanz prüft immer, ob eines der unmittelbar untergeordneten Elemente einen Wert für DockPanel.Dockfestgelegt hat.A DockPanel instance will always check to see whether any of its immediate child elements have set a value for DockPanel.Dock. Wenn dies der Fall ist, werden diese Werte zur Eingabe für die Renderinglogik, die auf das jeweilige untergeordnete Element angewendet wird.If so, those values become input for the rendering logic applied to that particular child element. In der Liste DockPanel.Dock der DockPanel Instanzen werden jeweils ihre eigenen unmittelbaren untergeordneten Element Auflistungen behandelt, aber dieses Verhalten ist Implementierungs spezifisch für die VerarbeitungvonWerten.DockPanelNested DockPanel instances each treat their own immediate child element collections, but that behavior is implementation-specific to how DockPanel processes DockPanel.Dock values. Es ist theoretisch möglich, angefügte Eigenschaften zu besitzen, die Elemente über das unmittelbar übergeordnete Element hinaus beeinflussen.It is theoretically possible to have attached properties that influence elements beyond the immediate parent. Wenn die DockPanel.Dock angefügte-Eigenschaft für ein Element festgelegt ist DockPanel , das kein übergeordnetes Element besitzt, um darauf zu reagieren, wird kein Fehler oder keine Ausnahme ausgelöst.If the DockPanel.Dock attached property is set on an element that has no DockPanel parent element to act upon it, no error or exception is raised. Dies bedeutet einfach, dass ein globaler Eigenschafts Wert festgelegt wurde, jedoch kein DockPanel Aktuelles übergeordnetes Element, das die Informationen verarbeiten könnte.This simply means that a global property value was set, but it has no current DockPanel parent that could consume the information.

Angefügte Eigenschaften im CodeAttached Properties in Code

Angefügte Eigenschaften in WPF haben nicht die typischen CLR-Wrapper Methoden für den einfachen Get-/Set-Zugriff.Attached properties in WPF do not have the typical CLR "wrapper" methods for easy get/set access. Dies liegt daran, dass die angefügte Eigenschaft nicht notwendigerweise Teil des CLR-Namespace für Instanzen ist, in denen die Eigenschaft festgelegt ist.This is because the attached property is not necessarily part of the CLR namespace for instances where the property is set. Allerdings muss ein XAML-Prozessor in der Lage sein, diese Werte festzulegen, wenn XAML analysiert wird.However, a XAML processor must be able to set those values when XAML is parsed. Um eine effektive Verwendung angefügter Eigenschaften zu unterstützen, muss der Besitzertyp der angefügten Eigenschaft dedizierte Accessormethoden in der Form Get_PropertyName_ und Set_PropertyName_ implementieren.To support an effective attached property usage, the owner type of the attached property must implement dedicated accessor methods in the form Get_PropertyName_ and Set_PropertyName_. Diese dedizierten Accessormethoden eignen sich auch zum Abrufen oder Festlegen der angefügten Eigenschaft im Code.These dedicated accessor methods are also useful to get or set the attached property in code. Im Hinblick auf Code ist eine angefügte Eigenschaft einem dahinter liegenden Feld ähnlich, das Methodenaccessoren anstelle von Eigenschaftenaccessoren besitzt, und das dahinter liegende Feld kann in jedem Objekt vorhanden sein, anstatt explizit definiert werden zu müssen.From a code perspective, an attached property is similar to a backing field that has method accessors instead of property accessors, and that backing field can exist on any object rather than needing to be specifically defined.

Das folgende Beispiel zeigt, wie Sie eine angefügte Eigenschaft im Code festlegen können.The following example shows how you can set an attached property in code. In diesem Beispiel myCheckBox ist eine Instanz CheckBox der-Klasse.In this example, myCheckBox is an instance of the CheckBox class.

DockPanel myDockPanel = new DockPanel();
CheckBox myCheckBox = new CheckBox();
myCheckBox.Content = "Hello";
myDockPanel.Children.Add(myCheckBox);
DockPanel.SetDock(myCheckBox, Dock.Top);
Dim myDockPanel As New DockPanel()
Dim myCheckBox As New CheckBox()
myCheckBox.Content = "Hello"
myDockPanel.Children.Add(myCheckBox)
DockPanel.SetDock(myCheckBox, Dock.Top)

Ähnlich wie beim XAML-Fall, myCheckBox wenn nicht bereits als untergeordnetes Element von myDockPanel durch die dritte Codezeile hinzugefügt wurde, würde die vierte Codezeile keine Ausnahme auslöst, aber der Eigenschafts Wert würde nicht mit einem DockPanel übergeordneten Element interagieren und somit würde nichts tun.Similar to the XAML case, if myCheckBox had not already been added as a child element of myDockPanel by the third line of code, the fourth line of code would not raise an exception, but the property value would not interact with a DockPanel parent and thus would do nothing. Nur ein DockPanel.Dock für ein untergeordnetes Element festgelegter Wert, in dem DockPanel ein übergeordnetes Element vorhanden ist, führt zu einem effektiven Verhalten in der gerenderten Anwendung.Only a DockPanel.Dock value set on a child element combined with the presence of a DockPanel parent element will cause an effective behavior in the rendered application. (In diesem Fall könnten Sie die angefügte Eigenschaft festlegen und anschließend an die Struktur anfügen.(In this case, you could set the attached property, then attach to the tree. Oder Sie könnten die angefügte Eigenschaft an die Struktur anfügen und anschließend festlegen.Or you could attach to the tree then set the attached property. Jede Reihenfolge stellt das gleiche Ergebnis bereit.)Either action order provides the same result.)

Metadaten der angefügten EigenschaftAttached Property Metadata

Beim Registrieren der Eigenschaft FrameworkPropertyMetadata wird festgelegt, um die Eigenschaften der Eigenschaft anzugeben, z. b. ob sich die Eigenschaft auf Rendering, Messung usw. auswirkt.When registering the property, FrameworkPropertyMetadata is set to specify characteristics of the property, such as whether the property affects rendering, measurement, and so on. Metadaten für eine angefügte Eigenschaft unterscheiden sich im Allgemeinen nicht von denen für eine Abhängigkeitseigenschaft.Metadata for an attached property is generally no different than on a dependency property. Wenn Sie einen Standardwert in einer Überschreibung für die Metadaten von angefügten Eigenschaften angeben, wird dieser Wert der Standardwert der impliziten angefügten Eigenschaft in Instanzen der überschreibenden Klasse.If you specify a default value in an override to attached property metadata, that value becomes the default value of the implicit attached property on instances of the overriding class. Der Standardwert wird insbesondere gemeldet, wenn ein Prozess den Wert einer angefügten Eigenschaft über die Get-Methodenaccessoren für diese Eigenschaft abfragt, die eine Instanz der Klasse angibt, in dem Sie die Metadaten festgelegt haben, und wenn der Wert für diese angefügte Eigenschaft andernfalls nicht festgelegt war.Specifically, your default value is reported if some process queries for the value of an attached property through the Get method accessor for that property, specifying an instance of the class where you specified the metadata, and the value for that attached property was otherwise not set.

Wenn Sie die Vererbung von Eigenschaftswerten für eine Eigenschaft aktivieren möchten, sollten Sie die angefügten Eigenschaften anstelle von nicht angefügten Abhängigkeitseigenschaften verwenden.If you want to enable property value inheritance on a property, you should use attached properties rather than non-attached dependency properties. Weitere Informationen finden Sie unter Vererbung von Eigenschaftswerten.For details, see Property Value Inheritance.

Benutzerdefinierte angefügte EigenschaftenCustom Attached Properties

Wann sollte eine angefügte Eigenschaft erstellt werden?When to Create an Attached Property

Sie können eine angefügte Eigenschaft erstellen, wenn ein Mechanismus für Eigenschafteneinstellungen für andere Klassen als die definierende Klasse zur Verfügung stehen muss.You might create an attached property when there is a reason to have a property setting mechanism available for classes other than the defining class. Das gängigste Szenario hierfür ist Layout.The most common scenario for this is layout. Beispiele für vorhandene Layouteigenschaften Panel.ZIndexsind DockPanel.Dock, Canvas.Topund.Examples of existing layout properties are DockPanel.Dock, Panel.ZIndex, and Canvas.Top. Das hier aktivierte Szenario: Elemente, die als untergeordnete Elemente für das Layout steuernde Elemente vorhanden sind, können Layoutanforderungen einzeln an die übergeordneten Layoutelemente stellen, für jede Einstellung einen Eigenschaftswert, den das übergeordnete Element als angefügte Eigenschaft definiert.The scenario enabled here is that elements that exist as child elements to layout-controlling elements are able to express layout requirements to their layout parent elements individually, each setting a property value that the parent defined as an attached property.

Ein weiteres Szenario für die Verwendung einer angefügten Eigenschaft: Wenn Ihre Klasse einen Dienst darstellt und Sie möchten, dass Klassen den Dienst auf transparentere Weise integrieren können.Another scenario for using an attached property is when your class represents a service, and you want classes to be able to integrate the service more transparently.

Ein weiteres Szenario ist jedoch die Unterstützung des Visual Studio WPF-Designers, wie z. b. die Bearbeitung von Eigenschaften Fenstern.Yet another scenario is to receive Visual Studio WPF Designer support, such as Properties window editing. Weitere Informationen finden Sie unter Übersicht über das Erstellen von Steuerelementen.For more information, see Control Authoring Overview.

Wie bereits erwähnt, sollten Sie als eine angefügte Eigenschaft registrieren, wenn Sie die Vererbung von Eigenschaftswerten verwenden möchten.As mentioned before, you should register as an attached property if you want to use property value inheritance.

Erstellen einer angefügten EigenschaftHow to Create an Attached Property

Wenn die Klasse die angefügte Eigenschaft ausschließlich für die Verwendung in anderen Typen definiert, muss die Klasse nicht von DependencyObjectabgeleitet werden.If your class is defining the attached property strictly for use on other types, then the class does not have to derive from DependencyObject. Sie müssen jedoch von DependencyObject abgeleitet werden, wenn Sie dem WPF-Gesamtmodell folgen, wenn die angefügte Eigenschaft auch eine Abhängigkeits Eigenschaft ist.But you do need to derive from DependencyObject if you follow the overall WPF model of having your attached property also be a dependency property.

Definieren Sie die angefügte Eigenschaft als Abhängigkeits Eigenschaft, public static readonly indem Sie ein DependencyPropertyFeld vom Typ deklarieren.Define your attached property as a dependency property by declaring a public static readonly field of type DependencyProperty. Sie definieren dieses Feld mithilfe des Rückgabewerts RegisterAttached der-Methode.You define this field by using the return value of the RegisterAttached method. Der Feldname muss mit dem Namen der angefügten Eigenschaft, angefügt Propertyan die Zeichenfolge, mit dem festgelegten WPF-Muster für die Benennung der identifizierenden Felder und der Eigenschaften, die Sie darstellen, identisch sein.The field name must match the attached property name, appended with the string Property, to follow the established WPF pattern of naming the identifying fields versus the properties that they represent. Der angefügte Eigenschaften Anbieter muss auch statische Get_PropertyName_ -und Set_PropertyName_ -Methoden als Accessoren für die angefügte Eigenschaft bereitstellen. Wenn dies nicht der Fall ist, kann das Eigenschaften System die angefügte Eigenschaft nicht verwenden.The attached property provider must also provide static Get_PropertyName_ and Set_PropertyName_ methods as accessors for the attached property; failing to do this will result in the property system being unable to use your attached property.

Hinweis

Wenn Sie den Get-Accessor der angefügten Eigenschaft weglassen, funktioniert die Datenbindung für die Eigenschaft nicht in Entwurfs Tools wie Visual Studio und Expression Blend.If you omit the attached property's get accessor, data binding on the property will not work in design tools, such as Visual Studio and Expression Blend.

Der Get-AccessorThe Get Accessor

Die Signatur für den Get_PropertyName_ -Accessor muss wie folgt lauten:The signature for the Get_PropertyName_ accessor must be:

public static object GetPropertyName(object target)

  • Das target-Objekt kann als spezifischerer Typ in Ihrer Implementierung angegeben werden.The target object can be specified as a more specific type in your implementation. Beispielsweise gibt die DockPanel.GetDock -Methode den-Parameter UIElementals ein, da die angefügte-Eigenschaft nur für- UIElement Instanzen festgelegt werden soll.For example, the DockPanel.GetDock method types the parameter as UIElement, because the attached property is only intended to be set on UIElement instances.

  • Der Rückgabewert kann als spezifischerer Typ in Ihrer Implementierung angegeben werden.The return value can be specified as a more specific type in your implementation. Beispielsweise gibt die GetDock -Methode Sie als Dockein, da der Wert nur auf diese Enumeration festgelegt werden kann.For example, the GetDock method types it as Dock, because the value can only be set to that enumeration.

Der Set-AccessorThe Set Accessor

Die Signatur für den Set_PropertyName_ -Accessor muss wie folgt lauten:The signature for the Set_PropertyName_ accessor must be:

public static void SetPropertyName(object target, object value)

  • Das target-Objekt kann als spezifischerer Typ in Ihrer Implementierung angegeben werden.The target object can be specified as a more specific type in your implementation. Beispielsweise gibt die SetDock -Methode Sie als UIElementein, da die angefügte-Eigenschaft nur für- UIElement Instanzen festgelegt werden soll.For example, the SetDock method types it as UIElement, because the attached property is only intended to be set on UIElement instances.

  • Das value-Objekt kann als spezifischerer Typ in Ihrer Implementierung angegeben werden.The value object can be specified as a more specific type in your implementation. Beispielsweise gibt die SetDock -Methode Sie als Dockein, da der Wert nur auf diese Enumeration festgelegt werden kann.For example, the SetDock method types it as Dock, because the value can only be set to that enumeration. Denken Sie daran, dass der Wert für diese Methode die Eingabe des XAML-Loaders ist, wenn sie Ihre angefügte Eigenschaft in einer Verwendung der angefügten Eigenschaft im Markup erkennt.Remember that the value for this method is the input coming from the XAML loader when it encounters your attached property in an attached property usage in markup. Diese Eingabe ist der Wert, der als XAML-Attributwert im Markup angegeben wird.That input is the value specified as a XAML attribute value in markup. Aus diesem Grund muss die Typkonvertierung, das Wertserialisierungsprogramm oder die Unterstützung von Markuperweiterungen für den verwendeten Typ vorhanden sein, damit der entsprechende Typ aus dem Attributwert (der letztendlich nur eine Zeichenfolge ist) erstellt werden kann.Therefore there must be type conversion, value serializer, or markup extension support for the type you use, such that the appropriate type can be created from the attribute value (which is ultimately just a string).

Das folgende Beispiel zeigt die Registrierung der Abhängigkeits Eigenschaft ( RegisterAttached mit der-Methode) sowie die Accessoren Get_PropertyName_ und Set_PropertyName_ .The following example shows the dependency property registration (using the RegisterAttached method), as well as the Get_PropertyName_ and Set_PropertyName_ accessors. Im Beispiel ist der Name der angefügten Eigenschaft IsBubbleSource.In the example, the attached property name is IsBubbleSource. Deshalb müssen die Accessoren GetIsBubbleSource und SetIsBubbleSource genannt werden.Therefore, the accessors must be named GetIsBubbleSource and SetIsBubbleSource.

public static readonly DependencyProperty IsBubbleSourceProperty = DependencyProperty.RegisterAttached(
  "IsBubbleSource",
  typeof(Boolean),
  typeof(AquariumObject),
  new FrameworkPropertyMetadata(false, FrameworkPropertyMetadataOptions.AffectsRender)
);
public static void SetIsBubbleSource(UIElement element, Boolean value)
{
  element.SetValue(IsBubbleSourceProperty, value);
}
public static Boolean GetIsBubbleSource(UIElement element)
{
  return (Boolean)element.GetValue(IsBubbleSourceProperty);
}
Public Shared ReadOnly IsBubbleSourceProperty As DependencyProperty = DependencyProperty.RegisterAttached("IsBubbleSource", GetType(Boolean), GetType(AquariumObject), New FrameworkPropertyMetadata(False, FrameworkPropertyMetadataOptions.AffectsRender))
Public Shared Sub SetIsBubbleSource(ByVal element As UIElement, ByVal value As Boolean)
    element.SetValue(IsBubbleSourceProperty, value)
End Sub
Public Shared Function GetIsBubbleSource(ByVal element As UIElement) As Boolean
    Return CType(element.GetValue(IsBubbleSourceProperty), Boolean)
End Function

Attribute von angefügten EigenschaftenAttached Property Attributes

WPF definiert verschiedene .NET Framework-Attribute.NET Framework attributes , die Informationen zu angefügten Eigenschaften für reflektionsprozesse und typische Benutzer von Reflektion und Eigenschafts Informationen wie Designern bereitstellen sollen.WPF defines several .NET Framework-Attribute.NET Framework attributes that are intended to provide information about attached properties to reflection processes, and to typical users of reflection and property information such as designers. Da angefügte Eigenschaften einen uneingeschränkten Bereich haben, benötigen Entwickler eine Möglichkeit, Benutzer nicht durch eine globale Liste aller angefügten Eigenschaften zu überwältigen, die in einer bestimmten Implementierung von Technologie definiert sind, die XAML verwendet.Because attached properties have a type of unlimited scope, designers need a way to avoid overwhelming users with a global list of all the attached properties that are defined in a particular technology implementation that uses XAML. Das .NET Framework-Attribute.NET Framework attributes , das WPF für angefügte Eigenschaften definiert, kann verwendet werden, um die Situationen festzustellen, in denen eine angegebene angefügte Eigenschaft in einem Eigenschaften Fenster angezeigt werden soll.The .NET Framework-Attribute.NET Framework attributes that WPF defines for attached properties can be used to scope the situations where a given attached property should be shown in a properties window. Sie sollten diese Attribute auch auf Ihre eigenen benutzerdefinierten angefügten Eigenschaften anwenden.You might consider applying these attributes for your own custom attached properties also. Der Zweck und die Syntax von .NET Framework-Attribute.NET Framework attributes wird auf den entsprechenden Referenzseiten beschrieben:The purpose and syntax of the .NET Framework-Attribute.NET Framework attributes is described on the appropriate reference pages:

Weitere Informationen zu angefügten EigenschaftenLearning More About Attached Properties

  • Weitere Informationen zum Erstellen einer angefügten Eigenschaft finden Sie unter Registrieren einer angefügten Eigenschaft.For more information on creating an attached property, see Register an Attached Property.

  • Weitergehende Verwendungsszenarios für Abhängigkeitseigenschaften und angefügte Eigenschaften finden Sie unter Benutzerdefinierte Abhängigkeitseigenschaften.For more advanced usage scenarios for dependency properties and attached properties, see Custom Dependency Properties.

  • Sie können auch eine Eigenschaft als angefügte Eigenschaft und als Abhängigkeitseigenschaft registrieren, dann jedoch trotzdem „Wrapper“-Implementierungen offenlegen.You can also register a property as an attached property, and as a dependency property, but then still expose "wrapper" implementations. In diesem Fall kann die Eigenschaft entweder auf das Element festgelegt werden, oder auf ein beliebiges Element über die angefügte XAML-Eigenschaftssyntax.In this case, the property can be set either on that element, or on any element through the XAML attached property syntax. Ein Beispiel für eine Eigenschaft mit einem geeigneten Szenario für Standard-und angefügte Verwendungen FrameworkElement.FlowDirectionist.An example of a property with an appropriate scenario for both standard and attached usages is FrameworkElement.FlowDirection.

Siehe auchSee also