XAML-Syntax von PropertyPathPropertyPath XAML Syntax

Das PropertyPath-Objekt unterstützt eine komplexe Inline XAMLXAML Syntax zum Festlegen verschiedener Eigenschaften, die den PropertyPath Typ als Wert annehmen.The PropertyPath object supports a complex inline XAMLXAML syntax for setting various properties that take the PropertyPath type as their value. In diesem Thema wird die PropertyPath Syntax beschrieben, die auf Bindungs-und Animations Syntax angewendet wird.This topic documents the PropertyPath syntax as applied to binding and animation syntaxes.

Verwendung von PropertyPathWhere PropertyPath Is Used

PropertyPath ist ein gängiges Objekt, das in mehreren Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF) Features verwendet wird.PropertyPath is a common object that is used in several Windows Presentation Foundation (WPF)Windows Presentation Foundation (WPF) features. Trotz der Verwendung der allgemeinen PropertyPath, um Eigenschafts Pfadinformationen zu übermitteln, unterscheiden sich die Verwendungen für jeden Funktionsbereich, in dem PropertyPath als Typ verwendet wird.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 verwendet WPFWPF PropertyPath, um Objektmodell Pfade zum Durchlaufen der Eigenschaften einer Objektdaten Quelle zu beschreiben und den Zielpfad für gezielte Animationen zu beschreiben.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 Vorlagen Eigenschaften, z. b. Setter.Property, nehmen einen qualifizierten Eigenschaftsnamen an, der einer PropertyPathsehr ähnlich ist.Some style and template properties such as Setter.Property take a qualified property name that superficially resembles a PropertyPath. Aber dies ist kein echter PropertyPath. Stattdessen handelt es sich um einen qualifizierten Besitzer. die Verwendung des Eigenschafts Zeichen folgen Formats, das vom WPF-XAMLXAML Prozessor in Verbindung mit dem Typkonverter für DependencyPropertyaktiviert wird.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. Eigenschafts Pfade werden insbesondere für das ObjectDataProviderverwendet, das zum Abrufen von Bindungs Quellen von Common Language Runtime (CLR)-Objekten und deren Eigenschaften verwendet wird.Property paths are particularly used for the ObjectDataProvider, which is used for obtaining binding sources from common language runtime (CLR) objects and their properties.

Beachten Sie, dass die Datenbindung an XML PropertyPathnicht verwendet, da Sie im Bindingnicht Path verwendet.Note that data binding to XML does not use PropertyPath, because it does not use Path in the Binding. Verwenden Sie stattdessen XPath, und geben Sie eine gültige XPath-Syntax in der XML-Dokumentobjektmodell (DOM) der Daten an.Instead, you use XPath and specify valid XPath syntax into the XML Document Object Model (DOM) of the data. XPath wird auch als Zeichenfolge angegeben, aber hier nicht dokumentiert. Weitere Informationen finden Sie unterbinden 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, beispielsweise eine ListBox binden, die abhängig von der Anzahl der Datenelemente in der Auflistung erweitert werden, sollte der Eigenschafts Pfad auf das Auflistungs Objekt und nicht auf einzelne Auflistungs Elemente 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. Das Daten Bindungs Modul passt die als Datenquelle verwendete Auflistung automatisch an den Typ des Bindungs Ziels an, was zu einem Verhalten führt, z. b. zum Auffüllen einer ListBox mit einem Element Array.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 in den Namen einer Eigenschaft aufgelöst werden, die im aktuellen DataContext für eine Path Verwendung ist.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 kann eine Hash Tabelle, die Zeichen folgen Schlüssel und Zeichen folgen Werte enthält, auf diese Weise zum Binden an Text für eine TextBoxverwendet werden.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. Ausführliche Informationen zu diesem Aspekt eines indizierten Eigenschafts Pfads 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 aufgelöst werden, die der aktuelle DataContextist.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 geben an, dass diese Eigenschaft in einer PropertyPath mit einer Teilqualifikation erstellt werden soll.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. Der ownerType durchsucht die Typen, auf die ein XAMLXAML Prozessor Zugriff hat, über die XmlnsDefinitionAttribute Deklarationen in den einzelnen Assemblys.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.

Zur Verwendung als Storyboard-Ziel muss die als propertyName angegebene Eigenschaft DependencyPropertysein.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

Oberflächlich betrachtet, ähnelt diese Syntax XPath.Superficially, this syntax resembles XPath. Ein echter XPath-Ausdruck für die Bindung an eine XML-Datenquelle wird nicht als Path Wert verwendet und sollte stattdessen für die sich gegenseitig ausschließende XPath-Eigenschaft verwendet werden.A true XPath expression for binding to an XML 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. Ausführliche 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. Im folgenden Beispiel wird ein Eigenschafts Pfad zu der Farbe eines bestimmten x, y einer ColorGrid Eigenschaft erstellt, die ein Pixelraster Array von SolidColorBrush Objekten enthält: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 Ziel Eigenschaft einer Animation muss eine Abhängigkeits Eigenschaft sein, die entweder einen Freezable oder einen primitiven Typ annimmt.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 zu animierende Eigenschaft muss entweder ein Freezable oder ein primitiver Typ sein.The value type or the property being animated must be either a Freezable type or a primitive. Die Eigenschaft, die den Pfad startet, muss in den Namen einer Abhängigkeits Eigenschaft aufgelöst werden, die für den angegebenen TargetName Typ vorhanden ist.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 zum Animieren einer Freezable zu unterstützen, die bereits eingefroren ist, muss das durch TargetName angegebene Objekt eine FrameworkElement oder FrameworkContentElement abgeleitete Klasse sein.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ängigkeits Eigenschaft aufgelöst werden, die für den angegebenen TargetName Typ vorhanden ist.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 sein, die entweder ein Freezable Werttyp oder ein primitiv ist, das für den angegebenen TargetName Typ vorhanden ist.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. Anders ausgedrückt: propertyName2 müssen als eine Abhängigkeits Eigenschaft für den Typ vorhanden sein, der die propertyName PropertyTypeist.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 festzustellen, benötigen Sie eine TargetName für ein Zielobjekt, und dieser Name wird von x:Name oder Namefestgelegt.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 werden buchstäblich zwischen Instanzen gemeinsam genutzt und würden doppelte Namen erhalten.) Wenn die einzelnen Eigenschaften eines Elements, das Sie möglicherweise animieren möchten, von einem Stil oder einer Vorlage stammen, müssen Sie mit einer benannten Element Instanz beginnen, die nicht aus einer Stilvorlage stammt, und dann auf die visuelle Struktur des Stils oder der Vorlage abzielen, um die Eigenschaft zu empfangen. Sie möchten animieren.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.

Die Background-Eigenschaft einer Panel ist beispielsweise eine komplette Brush (tatsächlich 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. Um eine Brush vollständig zu animieren, muss eine BrushAnimation (wahrscheinlich eine für jeden Brush Typ) vorhanden sein, und es ist kein solcher Typ vorhanden.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 die Eigenschaften eines bestimmten Brush Typs.To animate a Brush, you instead animate properties of a particular Brush type. Sie müssen von SolidColorBrush zu seiner Color gelangen, um eine ColorAnimation dort anzuwenden.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 geben an, dass diese Eigenschaft in einer PropertyPath mit einer Teilqualifikation erstellt werden soll.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. Der ownerType durchsucht die Typen, auf die ein XAMLXAML Prozessor Zugriff hat, über die XmlnsDefinitionAttribute Deklarationen in den einzelnen Assemblys.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. Die als propertyName angegebene Eigenschaft muss ein DependencyPropertysein.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" .../>

Ein Indexer wird von den meisten Abhängigkeits Eigenschaften oder Freezable Typen nicht unterstützt.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. Beispielsweise kann eine Indexer-Verwendung erforderlich sein, wenn die zwischen Eigenschaft eine Auflistung wie TransformGroupin einem Eigenschafts Pfad wie RenderTransform.Children[1].Angleist.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

Die Code Verwendung für PropertyPath, einschließlich der Vorgehensweise zum Erstellen einer PropertyPath, ist im Referenz Thema für PropertyPathdokumentiert.Code usage for PropertyPath, including how to construct a PropertyPath, is documented in the reference topic for PropertyPath.

Im Allgemeinen ist PropertyPath für die Verwendung von zwei verschiedenen Konstruktoren konzipiert, eine für die Bindungs Verwendungen und die einfachste Animations Verwendungen und eine für die komplexe Animations Verwendungen.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 Sie die PropertyPath(Object) Signatur für Bindungs Verwendungen, bei denen das Objekt eine Zeichenfolge ist.Use the PropertyPath(Object) signature for binding usages, where the object is a string. Verwenden Sie die PropertyPath(Object) Signatur für Animations Pfade mit einem Schritt, bei denen es sich bei dem Objekt um einen DependencyPropertyhandelt.Use the PropertyPath(Object) signature for one-step animation paths, where the object is a DependencyProperty. Verwenden Sie die 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