uwp
Binden versus x: binden
Zoeken…
Syntaxis
<object property = "{x: Bind}" ... />
<object property = "{x: Bind propertyPath}" ... />
<object property = "{x: Bind Path = propertyPath}" ... />
<object property = "{x: Bind [bindingProperties]}" ... />
<object property = "{x: Bind propertyPath, [bindingProperties]}" ... />
<object property = "{x: Bind Path = propertyPath, [bindingProperties]}" ... />
Opmerkingen
De {x:Bind}
markup-extensie - nieuw voor Windows 10 - is een alternatief voor {Binding}
.
{x:Bind}
mist enkele van de functies van {Binding}
, maar het loopt in minder tijd en minder geheugen dan {Binding}
en ondersteunt betere debugging.
Tijdens de XAML-laadtijd wordt {x:Bind}
omgezet in wat u kunt beschouwen als een bindend object, en dit object krijgt een waarde van een eigenschap op een gegevensbron. Het bindende object kan optioneel worden geconfigureerd om wijzigingen in de waarde van de eigenschap van de gegevensbron te observeren en zichzelf te vernieuwen op basis van die wijzigingen. Het kan ook optioneel worden geconfigureerd om wijzigingen in zijn eigen waarde terug te zetten naar de broneigenschap. De bindende objecten gemaakt door {x:Bind}
en {Binding}
zijn grotendeels functioneel equivalent. Maar {x:Bind}
voert code voor speciale doeleinden uit, die deze tijdens het compileren genereert, en {Binding}
gebruikt algemene inspectie van runtime-objecten. Bijgevolg hebben {x:Bind}
bindingen (vaak aangeduid als gecompileerde bindingen) geweldige prestaties, bieden compilatie-tijd validatie van uw bindende expressies en ondersteunen debugging door u in staat te stellen breekpunten in te stellen in de codebestanden die worden gegenereerd als de gedeeltelijke klasse voor uw pagina. Deze bestanden zijn te vinden in uw map obj, met namen als (voor C #) .g.cs.
Raadpleeg de MSDN-documentatie op x: Bind voor meer informatie
Evaluatie van {x: Bind} vanuit functies
Deze mogelijkheid is toegevoegd aan de Bind markup-extensie na v1607 (Redstone 1).
U kunt een functiepad opgeven, evenals argpaden en constante args. Laten we aannemen dat er een functie is gedefinieerd in onze backcode:
public string Translate(string text, string from, string to)
Nu kunnen we bind gebruiken om de functie te evalueren in het element dat we willen:
<TextBlock Name="SomeText" Text="How are you?" />
<TextBlock Name="{x:Bind Translate(SomeText.Text, 'en', 'es')}" />
Functie- en argpaden kunnen ook punten en gips bevatten.