XAML-Syntax von PropertyPathPropertyPath XAML Syntax

Das PropertyPath -Objekt unterstützt eine XAMLXAML komplexe Inline Syntax zum Festlegen verschiedener Eigenschaften, PropertyPath die den-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 PropertyPath die Syntax beschrieben, die für die Bindungs-und Animations Syntax verwendet wird.This topic documents the PropertyPath syntax as applied to binding and animation syntaxes.

Verwendung von PropertyPathWhere PropertyPath Is Used

PropertyPathist 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 allgemeinen PropertyPath Verwendung von, um Eigenschafts Pfadinformationen zu übermitteln, variieren 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 PropertyPathverwendet, um Objektmodell Pfade zum Durchlaufen der Eigenschaften einer Objektdaten Quelle zu beschreiben und den Zielpfad für gezielte Animationen zu beschreiben. WPFWPFPrimarily, 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, Setter.Property wie z. b., verwenden einen qualifizierten Eigenschaftsnamen, der einem PropertyPathsehr ähnlich istSome style and template properties such as Setter.Property take a qualified property name that superficially resembles a PropertyPath. Dies ist jedoch nicht der Fall PropertyPath, da es sich um einen qualifizierten Besitzer handelt. die Verwendung des Eigenschaften Zeichen folgen Formats, das XAMLXAML vom WPF-Prozessor in Kombination DependencyPropertymit dem Typkonverter für aktiviert 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 XMLXML Datenbindung an PropertyPathnicht verwendet, da Sie nicht Path in Bindingverwendet wird.Note that data binding to XMLXML does not use PropertyPath, because it does not use Path in the Binding. Verwenden XPath Sie stattdessen, und geben Sie eine gültige XPath- XML-Dokumentobjektmodell (DOM)XML Document Object Model (DOM) Syntax in der der Daten an.Instead, you use XPath and specify valid XPath syntax into the XML-Dokumentobjektmodell (DOM)XML Document Object Model (DOM) of the data. XPathwird 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 die ListBox Bindung a, die abhängig von der Anzahl der Datenelemente in der Auflistung erweitert wird, 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 Auflistung, die als Datenquelle verwendet wird, automatisch an den Typ des Bindungs Ziels an, was zu einem Verhalten führt, ListBox wie z. b. das Auffüllen eines 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 in der 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 TextBoxfür eine verwendet 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 Binding.Pathfinden Sie unter.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" .../>

propertyNamemuss 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 einem 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. Die ownerType sucht Typen, auf XAMLXAML die ein Prozessor Zugriff hat, durch XmlnsDefinitionAttribute die 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 eine 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

Auf den ersten Blick ähnelt diese Syntax XPathXPath.Superficially, this syntax resembles XPathXPath. Ein true XPathXPath -Ausdruck für die Bindung XMLXML an eine Datenquelle Path wird nicht als Wert verwendet und sollte stattdessen für die sich gegenseitig XPath ausschließende Eigenschaft verwendet werden.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 Binding.PathSie unter.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 ColorGrid einer 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 Freezable entweder ein Typ oder ein primitiv 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 TargetName den angegebenen 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 Freezable Klonen zum Animieren eines zu unterstützen, das bereits eingefroren ist, muss das von 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" .../>

propertyNamemuss 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" .../>

propertyNamemuss eine Eigenschaft sein, bei der es Freezable sich entweder um einen Werttyp oder um einen primitiven TargetName handelt, der für den angegebenen 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 muss als eine Abhängigkeits Eigenschaft für den Typ vorhanden sein, der 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 TargetName einen 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 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.

Beispielsweise Panel ist die Background -Eigenschaft eines ein kompletter Brush (tatsächlich ein SolidColorBrush), der 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 einen 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 Brush bestimmten Typs.To animate a Brush, you instead animate properties of a particular Brush type. Sie müssen sich von SolidColorBrush Color zu einem bewegen, um eine ColorAnimation dort anzuwendende.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 einem 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. Die ownerType sucht Typen, auf XAMLXAML die ein Prozessor Zugriff hat, durch XmlnsDefinitionAttribute die 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 eine 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 Freezable von den meisten Abhängigkeits Eigenschaften oder-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 TransformGroup RenderTransform.Children[1].Anglekann eine Indexer-Verwendung erforderlich sein, wenn die zwischen Eigenschaft eine Auflistung wie ist, z. b. in einem Eigenschafts Pfad, z. b.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 PropertyPathfür, einschließlich der Vorgehensweise PropertyPathzum Erstellen eines, ist im Referenz Thema PropertyPathfür dokumentiert.Code usage for PropertyPath, including how to construct a PropertyPath, is documented in the reference topic for PropertyPath.

Im allgemeinen PropertyPath ist so konzipiert, dass zwei verschiedene Konstruktoren verwendet werden: 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 PropertyPath(Object) die 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 PropertyPath(Object) die Signatur für Animations Pfade mit einem Schritt, bei denen das Objekt DependencyPropertyein ist.Use the PropertyPath(Object) signature for one-step animation paths, where the object is a DependencyProperty. Verwenden Sie PropertyPath(String, Object[]) die 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