XAML-Syntax von PropertyPathPropertyPath XAML Syntax

Die PropertyPath Objekt unterstützt eine komplexe XAMLXAML Syntax für das Festlegen verschiedener Eigenschaften, die annehmen der PropertyPath -Typ als Wert.The PropertyPath object supports a complex inline XAMLXAML syntax for setting various properties that take the PropertyPath type as their value. Dieses Thema dokumentiert die PropertyPath Syntax auf die Bindungs- und animationssyntax Syntaxen angewendet.This topic documents the PropertyPath syntax as applied to binding and animation syntaxes.

Verwendung von PropertyPathWhere PropertyPath Is Used

PropertyPath ist ein allgemeines Objekt, das in mehreren verwendet wird Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF) Funktionen.PropertyPath is a common object that is used in several Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF) features. Obwohl das allgemeine PropertyPath um Informationen zu vermitteln, die Verwendungen für jeden Funktionsbereich, in denen PropertyPath wird verwendet, wie ein Typ variieren.Despite using the common PropertyPath to convey property path information, the usages for each feature area where PropertyPath is used as a type vary. Daher ist es praktischer, die Syntaxen pro Funktion zu dokumentieren.Therefore, it is more practical to document the syntaxes on a per-feature basis.

In erster Linie WPFWPF verwendet PropertyPath um Objektmodellpfade zum Durchlaufen der Eigenschaften einer Objektdatenquelle zu beschreiben und den Zielpfad für zielgerichtete Animationen anzugeben.Primarily, WPFWPF uses PropertyPath to describe object-model paths for traversing the properties of an object data source, and to describe the target path for targeted animations.

Einige Stil- und Vorlageneigenschaften wie z. B. Setter.Property nehmen einen qualifizierten Eigenschaftsnamen, die ersten Blick ähnelt einem PropertyPath.Some style and template properties such as Setter.Property take a qualified property name that superficially resembles a PropertyPath. Dies ist jedoch keiner echten PropertyPath; er stellt vielmehr eine qualifizierte owner.property Zeichenfolgenformats, die durch den WPF-aktiviert ist XAMLXAML -Prozessor in Kombination mit den Typkonverter für DependencyProperty.But this is not a true PropertyPath; instead it is a qualified owner.property string format usage that is enabled by the WPF XAMLXAML processor in combination with the type converter for DependencyProperty.

PropertyPath für Objekte in der DatenbindungPropertyPath for Objects in Data Binding

Datenbindung ist eine WPFWPF-Funktion, bei der Sie an den Zielwert einer beliebigen Abhängigkeitseigenschaft binden können.Data binding is a WPFWPF feature whereby you can bind to the target value of any dependency property. Allerdings muss die Quelle einer solchen Datenbindung keine Abhängigkeitseigenschaft sein. Es kann sich um einen beliebigen Eigenschaftstyp handeln, der vom Anwendungsdatenanbieter erkannt wird.However, the source of such a data binding need not be a dependency property; it can be any property type that is recognized by the applicable data provider. Eigenschaftspfade werden vor allem verwendet, für die ObjectDataProvider, dient zum Abrufen von Bindungsquellen aus Common Language Runtime (CLR)common language runtime (CLR) Objekte und deren Eigenschaften.Property paths are particularly used for the ObjectDataProvider, which is used for obtaining binding sources from Common Language Runtime (CLR)common language runtime (CLR) objects and their properties.

Beachten Sie, dass die Datenbindung zu XMLXML verwendet keine PropertyPath, da sie nicht verwendet Path in die Binding.Note that data binding to XMLXML does not use PropertyPath, because it does not use Path in the Binding. Verwenden Sie stattdessen XPath , und geben Sie gültigen XPath-Syntax der XML-Dokumentobjektmodell (DOM)XML Document Object Model (DOM) der Daten.Instead, you use XPath and specify valid XPath syntax into the XML-Dokumentobjektmodell (DOM)XML Document Object Model (DOM) of the data. XPath wird auch als Zeichenfolge angegeben, aber hier nicht dokumentiert; finden Sie unter Binden an XML-Daten mithilfe von XMLDataProvider und XPath-Abfragen.XPath is also specified as a string, but is not documented here; see Bind to XML Data Using an XMLDataProvider and XPath Queries.

Für das Verständnis von Eigenschaftspfaden in der Datenbindung ist es wichtig zu wissen, dass Sie einen individuellen Eigenschaftswert als Ziel für die Bindung festlegen oder stattdessen Bindung zu Zieleigenschaften herstellen können, die Listen oder Auflistungen verwenden.A key to understanding property paths in data binding is that you can target the binding to an individual property value, or you can instead bind to target properties that take lists or collections. Wenn Sie Auflistungen binden, z. B. die Bindung einer ListBox , die abhängig von der Anzahl von Datenelementen in der Auflistung erweitert, und klicken Sie dann der Eigenschaftspfad sollten die Collection-Objekt, das nicht auf einzelne Auflistungselemente verweisen.If you are binding collections, for instance binding a ListBox that will expand depending on how many data items are in the collection, then your property path should reference the collection object, not individual collection items. Der Datenbindungs-Engine entspricht die Auflistung verwendet, wie die Daten automatisch in den Typ des Bindungsziels Verhalten Source wie das Auffüllen einer ListBox mit einem Elementarray.The data binding engine will match the collection used as the data source to the type of the binding target automatically, resulting in behavior such as populating a ListBox with an items array.

Einzelne Eigenschaft auf dem unmittelbaren Objekt als DatenkontextSingle Property on the Immediate Object as Data Context

<Binding Path="propertyName" .../>

PropertyName muss aufgelöst werden, werden den Namen einer Eigenschaft, die in der aktuellen DataContext für eine Path Nutzung.propertyName must resolve to be the name of a property that is in the current DataContext for a Path usage. Wenn die Bindung die Quelle aktualisiert, müssen für diese Eigenschaft Schreib- und Leseberechtigungen festgelegt sein, und das Quellobjekt muss geändert werden können.If your binding updates the source, that property must be read/write and the source object must be mutable.

Einzelner Indexer auf dem unmittelbaren Objekt als DatenkontextSingle Indexer on the Immediate Object as Data Context

<Binding Path="[key]" .../>

key muss der eingegebene Index zu einem Wörterbuch oder einer Hashtabelle oder der ganzzahlige Index eines Arrays sein.key must be either the typed index to a dictionary or hash table, or the integer index of an array. Zudem muss der Wert des Schlüssels ein Typ sein, der direkt an die Eigenschaft, auf die er angewendet wird, gebunden werden kann.Also, the value of the key must be a type that is directly bindable to the property where it is applied. Beispielsweise eine Hashtabelle mit Zeichenfolgenschlüsseln und Zeichenfolgenwerten kann verwendet werden auf diese Weise zum Binden an den Text für ein TextBox.For instance, a hash table that contains string keys and string values can be used this way to bind to Text for a TextBox. Wenn der Schlüssel auf eine Auflistung oder einen Unterindex verweist, können Sie mit dieser Syntax eine Bindung zu einer Zielauflistungseigenschaft herstellen.Or, if the key points to a collection or subindex, you could use this syntax to bind to a target collection property. Andernfalls müssen Sie mithilfe einer Syntax wie <Binding Path="[key].propertyName" .../> auf eine bestimmte Eigenschaft verweisen.Otherwise, you need to reference a specific property, through a syntax such as <Binding Path="[key].propertyName" .../>.

Sie können falls erforderlich den Typ des Index angeben.You can specify the type of the index if necessary. Weitere Informationen zu diesem Aspekt eines indizierten eigenschaftspfads finden Sie unter Binding.Path.For details on this aspect of an indexed property path, see Binding.Path.

Mehrere Eigenschaften (indirekte Eigenschaftsziele)Multiple Property (Indirect Property Targeting)

<Binding Path="propertyName.propertyName2" .../>

propertyName muss in den Namen einer Eigenschaft zu sein, die der aktuelle aufgelöst DataContext.propertyName must resolve to be the name of a property that is the current DataContext. Bei den Pfadeigenschaften propertyName und propertyName2 kann es sich um alle Eigenschaften handeln, die in einer Beziehung vorhanden sind, wobei propertyName2 eine Eigenschaft in dem Typ ist, der dem Wert von propertyName entspricht.The path properties propertyName and propertyName2 can be any properties that exist in a relationship, where propertyName2 is a property that exists on the type that is the value of propertyName.

Einzelne angefügte oder anderweitig typqualifizierte EigenschaftSingle Property, Attached or Otherwise Type-Qualified

<object property="(ownerType.propertyName)" .../>

Die Klammern zeigen an, die diese Eigenschaft in einem PropertyPath mit einer partiellen Qualifikation erstellt werden sollten.The parentheses indicate that this property in a PropertyPath should be constructed using a partial qualification. Es kann ein XML-Namespace verwendet werden, um den Typ mit einer entsprechenden Zuordnung zu suchen.It can use an XML namespace to find the type with an appropriate mapping. Die ownerType sucht Typen, die eine XAMLXAML -Prozessor zugreifen kann, bis die XmlnsDefinitionAttribute -Deklarationen in jeder Assembly.The ownerType searches types that a XAMLXAML processor has access to, through the XmlnsDefinitionAttribute declarations in each assembly. In den meisten Anwendungen ist dem http://schemas.microsoft.com/winfx/2006/xaml/presentation-Namespace der XML-Standardnamespace zugeordnet. Ein Präfix ist daher normalerweise nur für benutzerdefinierte Typen oder andere Typen erforderlich, die sich anderweitig außerhalb dieses Namespace befinden.Most applications have the default XML namespace mapped to the http://schemas.microsoft.com/winfx/2006/xaml/presentation namespace, so a prefix is usually only necessary for custom types or types otherwise outside that namespace. propertyName muss in den Namen einer Eigenschaft aufgelöst werden, die im ownerType-Objekt vorhanden ist.propertyName must resolve to be the name of a property existing on the ownerType. Diese Syntax wird in der Regel für einen der folgenden Fälle verwendet:This syntax is generally used for one of the following cases:

  • Der Pfad wird in XAMLXAML angegeben, d.h. in einem Stil oder einer Vorlage, die keinen spezifischen Zieltyp aufweist.The path is specified in XAMLXAML that is in a style or template that does not have a specified Target Type. Eine qualifizierte Verwendung ist normalerweise in anderen Fällen als diesem nicht zulässig, da in Fällen ohne Stil bzw. Vorlage die Eigenschaft in einer Instanz anstatt in einem Typ enthalten ist.A qualified usage is generally not valid for cases other than this, because in non-style, non-template cases, the property exists on an instance, not a type.

  • Die Eigenschaft ist eine angefügte Eigenschaft.The property is an attached property.

  • Sie binden an eine statische Eigenschaft.You are binding to a static property.

Für die Verwendung als Storyboardziel, die Eigenschaft angegeben, als propertyName muss eine DependencyProperty.For use as storyboard target, the property specified as propertyName must be a DependencyProperty.

Quellendurchlauf (Binden an Auflistungshierarchien)Source Traversal (Binding to Hierarchies of Collections)

<object Path="propertyName/propertyNameX" .../>

Das Zeichen / in dieser Syntax ermöglicht die Navigation in einem hierarchischen Datenquellenobjekt. In der Hierarchie werden mehrere Schritte mit aufeinanderfolgenden Schrägstrichen (/) unterstützt.The / in this syntax is used to navigate within a hierarchical data source object, and multiple steps into the hierarchy with successive / characters are supported. Der Quellendurchlauf kennzeichnet die Zeigerposition des aktuellen Datensatzes, welche durch die Synchronisation der Daten mit der Benutzeroberfläche der Ansicht ermittelt wird.The source traversal accounts for the current record pointer position, which is determined by synchronizing the data with the UI of its view. Weitere Informationen zum Binden mit hierarchischen Datenquellenobjekten und zur Bedeutung des Zeigers für den aktuellen Datensatz in der Datenbindung finden Sie unter Verwenden des Master-Detail-Musters mit hierarchischen Daten und Übersicht über die Datenbindung.For details on binding with hierarchical data source objects, and the concept of current record pointer in data binding, see Use the Master-Detail Pattern with Hierarchical Data or Data Binding Overview.

Hinweis

Auf den ersten Blick ähnelt diese Syntax XPathXPath.Superficially, this syntax resembles XPathXPath. Eine echte XPathXPath Ausdruck für die Bindung an eine XMLXML -Datenquelle dient nicht als eine Path Wert ein, und sollte stattdessen verwendet werden, für die sich gegenseitig ausschließende XPath Eigenschaft.A true XPathXPath expression for binding to an XMLXML data source is not used as a Path value and should instead be used for the mutually exclusive XPath property.

AuflistungsansichtenCollection Views

Stellen Sie dem Namen der Auflistungsansicht das Hashzeichen (#) voran, um auf eine benannte Auflistungsansicht zu verweisen.To reference a named collection view, prefix the collection view name with the hash character (#).

Zeiger auf den aktuellen DatensatzCurrent Record Pointer

Beginnen Sie die Pfadzeichenfolge mit einem Schrägstrich (/), um für eine Auflistungsansicht oder ein Master-Detail-Datenbindungsszenario auf den Zeiger für den aktuellen Datensatz zu verweisen.To reference the current record pointer for a collection view or master detail data binding scenario, start the path string with a forward slash (/). Ein beliebiger Pfad nach dem Schrägstrich wird ab dem Zeiger auf den aktuellen Datensatz durchlaufen.Any path past the forward slash is traversed starting from the current record pointer.

Mehrere IndexerMultiple Indexers

<object Path="[index1,index2...]" .../>

oderor

<object Path="propertyName[index,index2...]" .../>

Wenn ein bestimmtes Objekt mehrere Indexer unterstützt, können diese Indexer in der richtigen Reihenfolge angegeben werden, ähnlich wie ein Array, das auf Syntax verweist.If a given object supports multiple indexers, those indexers can be specified in order, similar to an array referencing syntax. Bei diesem Objekt kann es sich entweder um den aktuellen Kontext oder um den Wert einer Eigenschaft handeln, die ein Objekt mit mehreren Indizes enthält.The object in question can be either the current context or the value of a property that contains a multiple index object.

In der Standardeinstellung werden die Indexerwerte durch Verwendung der Eigenschaften des zugrunde liegenden Objekts eingegeben.By default, the indexer values are typed by using the characteristics of the underlying object. Sie können falls erforderlich den Typ des Index angeben.You can specify the type of the index if necessary. Weitere Informationen zum Eingeben der Indexer finden Sie unter Binding.Path.For details on typing the indexers, see Binding.Path.

Kombinieren von SyntaxenMixing Syntaxes

Jede der oben angegebenen Syntaxen kann mit einer anderen Syntax kombiniert werden.Each of the syntaxes shown above can be interspersed. Folgendes ist z. B. ein Beispiel, das ein Eigenschaftenpfad, der die Farbe an einem bestimmten X, y-Wert der erstellt eine ColorGrid Eigenschaft, die ein Pixelrasterarray von enthält SolidColorBrush Objekte:For instance, the following is an example that creates a property path to the color at a particular x,y of a ColorGrid property that contains a pixel grid array of SolidColorBrush objects:

<Rectangle Fill="{Binding ColorGrid[20,30].SolidColorBrushResult}" .../>

Escapezeichen für EigenschaftspfadzeichenfolgenEscapes for Property Path Strings

Bei bestimmten Geschäftsobjekten kann es vorkommen, dass die Eigenschaftspfadzeichenfolge eine Escapesequenz erfordert, um ordnungsgemäß analysiert werden zu können.For certain business objects, you might encounter a case where the property path string requires an escape sequence in order to parse correctly. Der Bedarf an Escapezeichen sollte gering sein, da viele dieser Zeichen ähnliche Benennungsinteraktionsprobleme in Sprachen aufweisen, die normalerweise verwendet werden würden, um das Geschäftsobjekt zu definieren.The need to escape should be rare, because many of these characters have similar naming-interaction issues in languages that would typically be used to define the business object.

  • In Indexern ([ ]) dient das Caretzeichen (^) als Escapezeichen für das nächste Zeichen.Inside indexers ([ ]), the caret character (^) escapes the next character.

  • Sie müssen bestimmte Zeichen (mit XML-Entitäten), die für die XML-Sprachdefinition von besonderer Bedeutung sind, mit Escapezeichen versehen.You must escape (using XML entities) certain characters that are special to the XML language definition. Verwenden Sie &, um das Zeichen „&“ mit Escapezeichen zu versehen.Use & to escape the character "&". Verwenden Sie >, um das Endtag „>“ mit Escapezeichen zu versehen.Use > to escape the end tag ">".

  • Sie müssen Escapezeichen (mit dem umgekehrten Schrägstrich \) zu Zeichen hinzufügen, die für das WPF-XAML-Parserverhalten beim Verarbeiten einer Markuperweiterung von besonderer Bedeutung sind.You must escape (using backslash \) characters that are special to the WPF XAML parser behavior for processing a markup extension.

    • Der umgekehrte Schrägstrich (\) ist das eigentliche Escapezeichen.Backslash (\) is the escape character itself.

    • Das Gleichheitszeichen (=) trennt den Eigenschaftsnamen vom Eigenschaftswert.The equal sign (=) separates property name from property value.

    • Das Komma (,) trennt Eigenschaften.Comma (,) separates properties.

    • Die rechte geschweifte Klammer (}) gibt das Ende einer Markuperweiterung an.The right curly brace (}) is the end of a markup extension.

Hinweis

Technisch gesehen funktionieren diese Escapezeichen auch für einen Storyboardeigenschaftspfad, aber da Sie normalerweise Objektmodelle für vorhandene WPF-Objekte durchlaufen, sollten Escapezeichen unnötig sein.Technically, these escapes work for a storyboard property path also, but you are usually traversing object models for existing WPF objects, and escaping should be unnecessary.

PropertyPath für AnimationszielePropertyPath for Animation Targets

Die Zieleigenschaft einer Animation muss eine Abhängigkeitseigenschaft, die entweder akzeptiert eine Freezable oder einen primitiven Typ.The target property of an animation must be a dependency property that takes either a Freezable or a primitive type. Die Zieleigenschaft für einen Typ und gegebenenfalls die animierte Eigenschaft können sich jedoch auf unterschiedlichen Objekten befinden.However, the targeted property on a type and the eventual animated property can exist on different objects. Bei Animationen wird ein Eigenschaftspfad verwendet, um die Verbindung zwischen der Eigenschaft des benannten Animationszielobjekts und der Eigenschaft der gewünschten Zielanimation zu definieren. Hierzu werden die Objekteigenschaftsbeziehungen in den Eigenschaftswerten durchlaufen.For animations, a property path is used to define the connection between the named animation target object's property and the intended target animation property, by traversing object-property relationships in the property values.

Allgemeine Überlegungen zu Objekteigenschaften für AnimationenGeneral Object-Property Considerations for Animations

Weitere Informationen zu Animationskonzepten im Allgemeinen finden Sie unter Übersicht über Storyboards und Übersicht über Animationen.For more information on animation concepts in general, see Storyboards Overview and Animation Overview.

Der Werttyp oder die animierte Eigenschaft muss entweder eine Freezable Typ oder ein primitiver Wert.The value type or the property being animated must be either a Freezable type or a primitive. Die Eigenschaft, die der Pfad beginnt muss in den Namen einer Abhängigkeitseigenschaft, die für den angegebenen vorhanden ist, werden aufgelöst TargetName Typ.The property that starts the path must resolve to be the name of a dependency property that exists on the specified TargetName type.

Um das Klonen für die Animation unterstützt eine Freezable , die bereits gesperrt ist, das Objekt anhand des TargetName muss eine FrameworkElement oder FrameworkContentElement abgeleitete Klasse.In order to support cloning for animating a Freezable that is already frozen, the object specified by TargetName must be a FrameworkElement or FrameworkContentElement derived class.

Einzelne Eigenschaft auf dem ZielobjektSingle Property on the Target Object

<animation Storyboard.TargetProperty="propertyName" .../>

propertyName muss in den Namen einer Abhängigkeitseigenschaft, die für den angegebenen vorhanden ist, werden aufgelöst TargetName Typ.propertyName must resolve to be the name of a dependency property that exists on the specified TargetName type.

Indirekte EigenschaftszieleIndirect Property Targeting

<animation Storyboard.TargetProperty="propertyName.propertyName2" .../>

propertyName muss eine Eigenschaft, die entweder eine Freezable Werttyp oder ein primitiver Typ, der in der angegebenen vorhanden ist TargetName Typ.propertyName must be a property that is either a Freezable value type or a primitive, which exists on the specified TargetName type.

propertyName2 muss der Name einer Abhängigkeitseigenschaft sein, die auf dem Objekt vorhanden ist, das dem Wert von propertyName entspricht.propertyName2 must be the name of a dependency property that exists on the object that is the value of propertyName. Das heißt, propertyName2 muss vorhanden sein, als Abhängigkeitseigenschaft des Typs, der die propertyName PropertyType.In other words, propertyName2 must exist as a dependency property on the type that is the propertyName PropertyType.

Die indirekte Verwendung von Animationen als Ziel ist aufgrund der angewendeten Stile und Vorlagen erforderlich.Indirect targeting of animations is necessary because of applied styles and templates. Um eine Animation als Ziel verwenden, müssen Sie eine TargetName ein Zielobjekt, und diesem-Name wird hergestellt, indem X: Name oder Name.In order to target an animation, you need a TargetName on a target object, and that name is established by x:Name or Name. Vorlagen- und Stilelemente können zwar ebenfalls Namen haben, aber diese Namen sind nur innerhalb des Namescope des Stils bzw. der Vorlage gültig.Although template and style elements also can have names, those names are only valid within the namescope of the style and template. (Wenn Vorlagen und Stile den gleichen Namescope wie das Anwendungsmarkup verwenden würden, wären die Namen nicht eindeutig.(If templates and styles did share namescopes with application markup, names couldn't be unique. Die Stile und Vorlagen würden dann von verschiedenen Instanzen gleichzeitig verwendet werden und würden doppelte Namen weitergeben.) Wenn die spezifischen Eigenschaften eines zu animierenden Elements aus einem Stil oder einer Vorlage stammen, müssen Sie daher mit einer benannten Elementinstanz beginnen, die nicht aus der Formatvorlage stammt, und dann als Ziel die visuelle Struktur des Stils oder der Vorlage angeben, um zu der Eigenschaft zu gelangen, die Sie animieren möchten.The styles and templates are literally shared between instances and would perpetuate duplicate names.) Thus, if the individual properties of an element that you might wish to animate came from a style or template, you need to start with a named element instance that is not from a style template, and then target into the style or template visual tree to arrive at the property you wish to animate.

Z. B. die Background Eigenschaft eine Panel ist eine vollständige Brush (eigentlich um ein SolidColorBrush), die aus einer Designvorlage stammt.For instance, the Background property of a Panel is a complete Brush (actually a SolidColorBrush) that came from a theme template. Zum Animieren einer Brush vollständig, es müssten Sie eine BrushAnimation, (wahrscheinlich einen für jede Brush Typ) und kein solcher Typ vorhanden ist.To animate a Brush completely, there would need to be a BrushAnimation (probably one for every Brush type) and there is no such type. Um einen Pinsel zu animieren, animieren Sie stattdessen Eigenschaften eines bestimmten Brush Typ.To animate a Brush, you instead animate properties of a particular Brush type. Müssen Sie zum Abrufen von SolidColorBrush auf seine Color anzuwendende eine ColorAnimation vorhanden.You need to get from SolidColorBrush to its Color to apply a ColorAnimation there. Der Eigenschaftspfad für dieses Beispiel wäre Background.Color.The property path for this example would be Background.Color.

Angefügte EigenschaftenAttached Properties

<animation Storyboard.TargetProperty="(ownerType.propertyName)" .../>

Die Klammern zeigen an, die diese Eigenschaft in einem PropertyPath mit einer partiellen Qualifikation erstellt werden sollten.The parentheses indicate that this property in a PropertyPath should be constructed using a partial qualification. Es kann ein XML-Namespace verwendet werden, um nach dem Typ zu suchen.It can use an XML namespace to find the type. Die ownerType sucht Typen, die eine XAMLXAML -Prozessor zugreifen kann, bis die XmlnsDefinitionAttribute -Deklarationen in jeder Assembly.The ownerType searches types that a XAMLXAML processor has access to, through the XmlnsDefinitionAttribute declarations in each assembly. In den meisten Anwendungen ist dem http://schemas.microsoft.com/winfx/2006/xaml/presentation-Namespace der XML-Standardnamespace zugeordnet. Ein Präfix ist daher normalerweise nur für benutzerdefinierte Typen oder andere Typen erforderlich, die sich anderweitig außerhalb dieses Namespace befinden.Most applications have the default XML namespace mapped to the http://schemas.microsoft.com/winfx/2006/xaml/presentation namespace, so a prefix is usually only necessary for custom types or types otherwise outside that namespace. propertyName muss in den Namen einer Eigenschaft aufgelöst werden, die im ownerType-Objekt vorhanden ist.propertyName must resolve to be the name of a property existing on the ownerType. Als die angegebene Eigenschaft propertyName muss eine DependencyProperty.The property specified as propertyName must be a DependencyProperty. (Alle in WPFWPF angefügten Eigenschaften werden als Abhängigkeitseigenschaften implementiert, weshalb dies nur bei benutzerdefinierten, angefügten Eigenschaften relevant ist.)(All WPFWPF attached properties are implemented as dependency properties, so this issue is only of concern for custom attached properties.)

IndexerIndexers

<animation Storyboard.TargetProperty="propertyName.propertyName2[index].propertyName3" .../>

Die meisten Abhängigkeitseigenschaften oder Freezable unterstützen keine Indexer.Most dependency properties or Freezable types do not support an indexer. Indexer können deshalb in einem Animationspfad nur an einer Zwischenposition zwischen der Eigenschaft, mit der die Kette am benannten Ziel beginnt, und gegebenenfalls der animierten Eigenschaft verwendet werden.Therefore, the only usage for an indexer in an animation path is at an intermediate position between the property that starts the chain on the named target and the eventual animated property. In der dargestellten Syntax ist dies propertyName2.In the provided syntax, that is propertyName2. Z. B. ein Indexer kann beispielsweise erforderlich sein, wenn die Zwischeneigenschaft eine Auflistung, z. B. ist TransformGroup, in einem Eigenschaftspfad wie z. B. RenderTransform.Children[1].Angle.For instance, an indexer usage might be necessary if the intermediate property is a collection such as TransformGroup, in a property path such as RenderTransform.Children[1].Angle.

PropertyPath im CodePropertyPath in Code

Verwendung von Code für PropertyPath, einschließlich Informationen zum Erstellen einer PropertyPath, finden Sie im Referenzthema für PropertyPath.Code usage for PropertyPath, including how to construct a PropertyPath, is documented in the reference topic for PropertyPath.

Im allgemeinen PropertyPath zwei verschiedenen Konstruktoren, für die Bindungsverwendungen und einfache Animationen und einer für komplexe Animationen verwenden soll.In general, PropertyPath is designed to use two different constructors, one for the binding usages and simplest animation usages, and one for the complex animation usages. Verwenden der PropertyPath(Object) Signatur für Bindungsverwendungen, wenn das Objekt eine Zeichenfolge.Use the PropertyPath(Object) signature for binding usages, where the object is a string. Verwenden der PropertyPath(Object) Signatur für Animationspfade, wobei das Objekt ist ein DependencyProperty.Use the PropertyPath(Object) signature for one-step animation paths, where the object is a DependencyProperty. Verwenden der PropertyPath(String, Object[]) -Signatur für komplexe Animationen.Use the PropertyPath(String, Object[]) signature for complex animations. Dieser zweite Konstruktor verwendet eine Tokenzeichenfolge für den ersten Parameter und ein Array von Objekten, die Positionen in der Tokenzeichenfolge füllen, um eine Eigenschaftspfadbeziehung zu definieren.This latter constructor uses a token string for the first parameter and an array of objects that fill positions in the token string to define a property path relationship.

Siehe auchSee also