Delen via


Binding Markup-extensie

Stelt een eigenschapswaarde uit als een gegevensgebonden waarde, maakt u een tussenliggend expressieobject en interpreteert u de gegevenscontext die van toepassing is op het element en de binding ervan tijdens runtime.

Gebruik van Bindingsuitdrukkingen

<object property="{Binding}" .../>  
-or-  
<object property="{Binding  bindProp1=value1[, bindPropN=valueN]*}" ...  
/>  
-or-  
<object property="{Binding path}" .../>  
-or  
<object property="{Binding path[, bindPropN=valueN]*}" .../>  

Syntaxisnotities

In deze syntaxis zijn de [] en * geen letterlijke waarden. Ze maken deel uit van een notatie om aan te geven dat nul of meer bindProp=waarde paren kunnen worden gebruikt, met een , scheidingsteken tussen deze en voorafgaande bindProp=waarde paren.

Alle eigenschappen die worden vermeld in de sectie Bindingeigenschappen die kunnen worden ingesteld met de bindingsextensie, kunnen in plaats daarvan worden ingesteld met behulp van kenmerken van een Binding objectelement. Dat is echter niet echt het gebruik van markeringsuitbreidingen van Binding, het is alleen de algemene XAML-verwerking van kenmerken die eigenschappen van de CLR-Binding-klasse instellen. Met andere woorden, <BindingbindProp1="waarde1"[bindPropN="waardeN"]*/> een equivalente syntaxis is voor kenmerken van Binding objectelementgebruik in plaats van een Binding expressiegebruik. Zie de sectie 'XAML-kenmerkgebruik' van de relevante eigenschap van Binding in de .NET Framework-klassebibliotheek voor meer informatie over het XAML-kenmerkgebruik van specifieke eigenschappen van Binding.

XAML-waarden

Waarde Beschrijving
bindProp1, bindPropN De naam van de eigenschap Binding of BindingBase die u wilt instellen. Niet alle Binding eigenschappen kunnen worden ingesteld met de Binding-extensie en sommige eigenschappen zijn alleen in een Binding expressie ingesteld met behulp van verdere geneste markeringsextensies. Zie de sectie Bindingeigenschappen die kunnen worden ingesteld met de bindingsextensie.
value1, valueN De waarde om de eigenschap op in te stellen. De verwerking van de kenmerkwaarde is uiteindelijk specifiek voor het type en de logica van de specifieke Binding eigenschap die wordt ingesteld.
path De padtekenreeks waarmee de impliciete eigenschap Binding.Path wordt ingesteld. Zie ook PropertyPath XAML-syntaxis.

Niet-gekwalificeerde {Binding}

Het gebruik van {Binding} zoals weergegeven in 'Gebruik van bindingsexpressie' maakt een Binding-object met standaardwaarden, waaronder een initiële Binding.Path van null. Dit is nog steeds handig in veel scenario's, omdat de gemaakte Binding mogelijk afhankelijk is van sleutelgegevensbindingseigenschappen, zoals Binding.Path en Binding.Source die zijn ingesteld in de context van runtimegegevens. Zie Data Bindingvoor meer informatie over het concept van gegevenscontext.

Impliciet pad

De Binding markeringsextensie gebruikt Binding.Path als conceptuele 'standaardeigenschap', waarbij Path= niet hoeft te worden weergegeven in de expressie. Als u een Binding-expressie met een impliciet pad opgeeft, moet het impliciete pad eerst in de expressie worden weergegeven, vóór andere bindProp=value paren waarbij de eigenschap Binding op naam wordt opgegeven. Bijvoorbeeld: {Binding PathString}, waarbij PathString een tekenreeks is die wordt geëvalueerd als de waarde van Binding.Path binnen de Binding die is gecreëerd door het gebruik van de markerextensie. U kunt een impliciet pad toevoegen met andere benoemde eigenschappen na het kommascheidingsteken, bijvoorbeeld {Binding LastName, Mode=TwoWay}.

Bindingeigenschappen die kunnen worden ingesteld met de bindingsextensie

De syntaxis die in dit onderwerp wordt weergegeven, maakt gebruik van de algemene bindProp=value benadering, omdat er veel lees-/schrijfeigenschappen van BindingBase of Binding zijn die kunnen worden ingesteld via de Binding syntaxis van de markeringsextensie/expressie. Ze kunnen in elke volgorde worden ingesteld, met uitzondering van een impliciete Binding.Path. (U hebt de mogelijkheid om expliciet Path=op te geven, in welk geval deze in elke volgorde kan worden ingesteld). In principe kunt u nul of meer van de eigenschappen in de onderstaande lijst instellen met behulp van bindProp=value paren gescheiden door komma's.

Voor verschillende van deze eigenschapswaarden zijn objecttypen vereist die geen ondersteuning bieden voor een systeemeigen typeconversie van een tekstsyntaxis in XAML, en daarom moeten markeringsextensies worden ingesteld als een kenmerkwaarde. Raadpleeg de sectie XAML-kenmerkgebruik in de .NET Framework-klassebibliotheek voor elke eigenschap voor meer informatie; de tekenreeks die u gebruikt voor de syntaxis van het XAML-kenmerk met of zonder verdere markeringsuitbreiding is in principe hetzelfde als de waarde die u opgeeft in een Binding expressie, met uitzondering dat u geen aanhalingstekens plaatst rond elke bindProp=value in de Binding expressie.

Hieronder vindt u eigenschappen van Binding die niet kunnen worden ingesteld met behulp van de Binding opmaakextensie/{Binding} expressieformulier.

  • UpdateSourceExceptionFilter: deze eigenschap verwacht een verwijzing naar een callback-implementatie. Callbacks/methoden anders dan gebeurtenishandlers kunnen niet worden gerefereerd in de XAML-syntaxis.

  • ValidationRules: de eigenschap neemt een generieke verzameling van ValidationRule objecten aan. Dit kan worden uitgedrukt als een eigenschapselement in een Binding objectelement, maar heeft geen direct beschikbare techniek voor kenmerkparsering voor gebruik in een Binding expressie. Raadpleeg het naslagonderwerp voor ValidationRules.

  • XmlNamespaceManager

Opmerkingen

Belangrijk

In termen van prioriteit van afhankelijkheidseigenschappen is een Binding expressie gelijk aan een lokaal ingestelde waarde. Als u een lokale waarde instelt voor een eigenschap die eerder een Binding expressie had, wordt de Binding volledig verwijderd. Zie waardevoorrang van afhankelijkheidseigenschappenvoor details.

Het beschrijven van gegevensbinding op basisniveau wordt niet behandeld in dit onderwerp. Zie Overzicht van gegevensbindingen.

Notitie

MultiBinding en PriorityBinding geen XAML-extensiesyntaxis ondersteunen. In plaats daarvan gebruikt u eigenschapselementen. Zie naslagonderwerpen voor MultiBinding en PriorityBinding.

Booleaanse waarden voor XAML zijn niet hoofdlettergevoelig. U kunt bijvoorbeeld {Binding NotifyOnValidationError=true} of {Binding NotifyOnValidationError=True}opgeven.

Bindingen die betrekking hebben op gegevensvalidatie, worden doorgaans opgegeven door een expliciet Binding element in plaats van als een {Binding ...}-expressie en het instellen van ValidatesOnDataErrors of ValidatesOnExceptions in een expressie is ongebruikelijk. Dit komt doordat de aanvullende eigenschap ValidationRules niet gemakkelijk kan worden ingesteld in het expressieformulier. Zie Bindingvalidatie implementerenvoor meer informatie.

Binding is een markeringsextensie. Markeringsextensies worden doorgaans geïmplementeerd wanneer er behoefte is om kenmerkwaarden anders te maken dan letterlijke waarden of handlernamen, en deze behoefte globaler is dan wat typeconverters doen op bepaalde typen of eigenschappen. Alle markeringsextensies in XAML gebruiken de { en } tekens in hun kenmerksyntaxis. Dit is de conventie waarmee een XAML-processor herkent dat een markeringsextensie de inhoud van de tekenreeks moet verwerken. Zie Markup Extensions en WPF XAMLvoor meer informatie.

Binding is een atypische markeringsextensie omdat de Binding-klasse die de extensiefunctionaliteit implementeert voor de XAML-implementatie van WPF ook verschillende andere methoden en eigenschappen implementeert die niet zijn gerelateerd aan XAML. De andere leden zijn bedoeld om Binding een veelzijdigere en zelfstandige klasse te maken die naast het functioneren als een XAML-markeringsextensie veel scenario's voor gegevensbindingen kan aanpakken.

Zie ook