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, <Binding
bindProp1="
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.
BindingGroupName: een tekenreeks die een mogelijke bindingsgroep identificeert. Dit is een relatief geavanceerd bindingsconcept; zie de referentiepagina voor BindingGroupName.
BindsDirectlyToSource: Booleaanse waarde kan
true
offalse
zijn. De standaardwaarde isfalse
.Converter: kan worden ingesteld als een
bindProp
=value
tekenreeks in de expressie, maar hiervoor is een objectverwijzing vereist voor de waarde, zoals een StaticResource Markup Extension. De waarde in dit geval is een exemplaar van een aangepaste conversieklasse.ConverterCulture: instelbaar in de expressie als een op standaarden gebaseerde identificator; zie het naslagonderwerp voor ConverterCulture.
ConverterParameter: kan worden ingesteld als een
bindProp
=value
tekenreeks in de expressie, maar dit is afhankelijk van het type parameter dat wordt doorgegeven. Als u een verwijzingstype voor de waarde doorgeeft, is voor dit gebruik een objectverwijzing vereist, zoals een geneste StaticResource Markup Extension.ElementName: wederzijds uitsluiten versus RelativeSource en Source; elk van deze bindingseigenschappen vertegenwoordigt een bepaalde bindingsmethodologie. Zie Overzicht van gegevensbindingen.
FallbackValue: kan worden ingesteld als een
bindProp
=value
tekenreeks in de expressie, maar dit is afhankelijk van het type van de waarde die wordt doorgegeven. Als u een verwijzingstype doorgeeft, dan is een objectverwijzing vereist, zoals een geneste StaticResource Markup Extension.IsAsync: Booleaanse waarde kan
true
offalse
zijn. De standaardwaarde isfalse
.Mode: constante naam is een waarde uit de opsomming BindingMode. Bijvoorbeeld
{Binding Mode=OneWay}
.NotifyOnSourceUpdated: Booleaanse waarde kan
true
offalse
zijn. De standaardwaarde isfalse
.NotifyOnTargetUpdated: Booleaanse waarde kan
true
offalse
zijn. De standaardwaarde isfalse
.NotifyOnValidationError: Booleaanse waarde kan
true
offalse
zijn. De standaardwaarde isfalse
.Path: een tekenreeks die een pad beschrijft in een gegevensobject of een algemeen objectmodel. De indeling biedt verschillende conventies voor het doorlopen van een objectmodel dat niet adequaat kan worden beschreven in dit onderwerp. Zie PropertyPath XAML-syntaxis.
RelativeSource: wederzijds uitsluiten versus met ElementName en Source; elk van deze bindingseigenschappen vertegenwoordigt een bepaalde bindingsmethodologie. Zie Overzicht van gegevensbindingen. Vereist een geneste RelativeSource MarkupExtension gebruik om de waarde op te geven.
Source: wederzijds uitsluiten versus RelativeSource en ElementName; elk van deze bindingseigenschappen vertegenwoordigt een bepaalde bindingsmethodologie. Zie Overzicht van gegevensbindingen. Vereist een geneste extensiegebruik, meestal een StaticResource Markup Extension die verwijst naar een objectgegevensbron uit een sleutellijst voor resources.
StringFormat: een tekenreeks die een tekenreeksindelingsconventie beschrijft voor de afhankelijke gegevens. Dit is een relatief geavanceerd bindingsconcept; zie de referentiepagina voor StringFormat.
TargetNullValue: kan worden ingesteld als een
bindProp
=value
tekenreeks in de expressie, maar dit is afhankelijk van het type parameter dat wordt doorgegeven. Als u een verwijzingstype voor de waarde doorgeeft, is een objectverwijzing vereist, zoals een geneste StaticResource Markup Extension.UpdateSourceTrigger: waarde een constante naam is uit de opsomming UpdateSourceTrigger. Bijvoorbeeld
{Binding UpdateSourceTrigger=LostFocus}
. Specifieke besturingselementen hebben mogelijk verschillende standaardwaarden voor deze bindingseigenschap. Zie UpdateSourceTrigger.ValidatesOnDataErrors: Booleaanse waarde kan
true
offalse
zijn. De standaardwaarde isfalse
. Zie opmerkingen.ValidatesOnExceptions: Booleaanse waarde kan
true
offalse
zijn. De standaardwaarde isfalse
. Zie opmerkingen.XPath: een tekenreeks die een pad beschrijft in het XMLDOM van een XML-gegevensbron. Zie Koppelen aan XML-gegevens met behulp van een XMLDataProvider en XPath-queries.
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.
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
- Binding
- Overzicht van gegevensbindingen
- XAML in WPF
- Markup Extensions en WPF XAML
.NET Desktop feedback