Tillägg för bindningsmarkering
Fördröjer ett egenskapsvärde så att det blir ett databundet värde, och skapar ett mellanliggande uttrycksobjekt samt tolkar datakontexten som gäller för elementet och dess bindning vid körning.
Användning av bindningsuttryck
<object property="{Binding}" .../>
-or-
<object property="{Binding bindProp1=value1[, bindPropN=valueN]*}" ...
/>
-or-
<object property="{Binding path}" .../>
-or
<object property="{Binding path[, bindPropN=valueN]*}" .../>
Syntaxanteckningar
I dessa syntaxer är []
och *
inte literaler. De är en del av en notation som anger att noll eller fler bindProp=
värde-par kan användas, med en ,
-avgränsare mellan dem och föregående bindProp=
värde-par.
Alla egenskaper som anges i avsnittet "Bindningsegenskaper som kan anges med bindningstillägget" kan i stället anges med hjälp av attribut för ett Binding objektelement. Det är dock inte den verkliga användningen av markeringstillägget i Binding, utan bara den allmänna XAML-bearbetningen av attribut som konfigurerar egenskaperna hos CLR-klassen Binding. Med andra ord är <Binding
bindProp1="
value1"[
bindPropN="
valueN"]*/>
en motsvarande syntax för attribut för Binding objektelementanvändning i stället för användning av Binding
uttryck. Mer information om XAML-attributanvändningen för specifika egenskaper för Bindingfinns i avsnittet "XAML-attributanvändning" i relevant egenskap för Binding i klassbiblioteket för .NET Framework.
XAML-värden
Värde | Beskrivning |
---|---|
bindProp1, bindPropN |
Namnet på egenskapen Binding eller BindingBase som ska anges. Alla Binding egenskaper kan inte anges med tillägget Binding och vissa egenskaper kan endast anges i ett Binding uttryck med hjälp av ytterligare kapslade tillägg. Se avsnittet "Bindningsegenskaper som kan anges med bindningstillägget". |
value1, valueN |
Värdet som egenskapen ska anges till. Hanteringen av attributvärdet är i slutändan specifik för typen och logiken för den specifika Binding egenskap som anges. |
path |
Sökvägssträngen som anger den implicita egenskapen Binding.Path. Se även PropertyPath XAML Syntax. |
Okvalificerad {Bindning}
Den {Binding}
-användning som visas i "Användning av bindningsuttryck" skapar ett Binding-objekt med standardvärden, som innehåller en initial Binding.Path på null
. Detta är fortfarande användbart i många scenarier, eftersom den skapade Binding kanske förlitar sig på viktiga databindningsegenskaper som Binding.Path och Binding.Source som anges i körningsdatakontexten. Mer information om begreppet datakontext finns i Databindning.
Implicit sökväg
Tillägget Binding
markup använder Binding.Path som en konceptuell "standardegenskap", där Path=
inte behöver visas i uttrycket. Om du anger ett Binding
uttryck med en implicit sökväg måste den implicita sökvägen visas först i uttrycket, innan andra bindProp
=value
par där egenskapen Binding anges med namn. Till exempel: {Binding PathString}
, där PathString
är en sträng som utvärderas som värdet för Binding.Path i Binding som skapats av markeringstilläggsanvändningen. Du kan lägga till en implicit sökväg med andra namngivna egenskaper efter kommaavgränsaren, till exempel {Binding LastName, Mode=TwoWay}
.
Bindningsegenskaper som kan anges med bindningstillägget
Syntaxen som visas i det här avsnittet använder den generiska bindProp
=value
-approximationen, eftersom det finns många läs- och skrivegenskaper för BindingBase eller Binding som kan anges via markeringstilläggs-/uttryckssyntaxen för Binding
. De kan anges i valfri ordning, med undantag för en implicit Binding.Path. (Du har möjlighet att uttryckligen ange Path=
, i vilket fall det kan anges i valfri ordning). I grund och botten kan du ange noll eller flera av egenskaperna i listan nedan med hjälp av bindProp
=value
par avgränsade med kommatecken.
Flera av dessa egenskapsvärden kräver objekttyper som inte stöder en intern typkonvertering från en textsyntax i XAML och därför kräver tillägg för markering för att kunna anges som ett attributvärde. Mer information finns i avsnittet XAML-attributanvändning i .NET Framework-klassbiblioteket för varje egenskap. strängen som du använder för XAML-attributsyntaxen med eller utan ytterligare markeringstilläggsanvändning är i princip samma som värdet som du anger i ett Binding
uttryck, med undantaget att du inte placerar citattecken runt varje bindProp
=value
i uttrycket Binding
.
BindingGroupName: en sträng som identifierar en möjlig bindningsgrupp. Detta är ett relativt avancerat bindningskoncept. se referenssidan för BindingGroupName.
BindsDirectlyToSource: Booleskt värde kan vara antingen
true
ellerfalse
. Standardvärdet ärfalse
.Converter: kan anges som en
bindProp
=value
sträng i uttrycket, men för att göra det krävs en objektreferens för värdet, till exempel ett StaticResource Markup Extension. Värdet i det här fallet är en instans av en anpassad konverterarklass.ConverterCulture: kan anges i uttrycket som en standardbaserad identifierare; se referensavsnittet för ConverterCulture.
ConverterParameter: kan anges som en
bindProp
=value
sträng i uttrycket, men detta beror på vilken typ av parameter som skickas. Om du skickar en referenstyp för värdet kräver den här användningen en objektreferens, till exempel en kapslad StaticResource Markup Extension.ElementName: ömsesidigt uteslutande jämfört med RelativeSource och Source; var och en av dessa bindningsegenskaper representerar en viss bindningsmetod. Se Översikt över databindning.
FallbackValue: kan anges som en
bindProp
=value
sträng i uttrycket, men detta beror på vilken typ av värde som skickas. Om du skickar en referenstyp krävs en objektreferens, till exempel en kapslad StaticResource Markup Extension.IsAsync: Booleskt värde kan vara antingen
true
ellerfalse
. Standardvärdet ärfalse
.Mode: värde är ett konstant namn från BindingMode uppräkningen. Till exempel
{Binding Mode=OneWay}
.NotifyOnSourceUpdated: Booleskt värde kan vara antingen
true
ellerfalse
. Standardvärdet ärfalse
.NotifyOnTargetUpdated: Booleskt värde kan vara antingen
true
ellerfalse
. Standardvärdet ärfalse
.NotifyOnValidationError: Booleskt värde kan vara antingen
true
ellerfalse
. Standardvärdet ärfalse
.Path: en sträng som beskriver en sökväg till ett dataobjekt eller en allmän objektmodell. Formatet innehåller flera olika konventioner för att korsa en objektmodell som inte kan beskrivas korrekt i det här avsnittet. Se PropertyPath XAML-syntax.
RelativeSource: ömsesidigt uteslutande jämfört med ElementName och Source; var och en av dessa bindningsegenskaper representerar en viss bindningsmetod. Se Översikt över databindning. Kräver användning av en kapslad RelativeSource MarkupExtension för att specificera värdet.
Source: ömsesidigt uteslutande jämfört med RelativeSource och ElementName; var och en av dessa bindningsegenskaper representerar en viss bindningsmetod. Se även Översikt över databindning. Kräver en kapslad tilläggsanvändning, vanligtvis en StaticResource Markup Extension som refererar till en objektdatakälla från en nyckelad resursordlista.
StringFormat: en sträng som beskriver en strängformatkonvention för bundna data. Detta är ett relativt avancerat bindningskoncept. se referenssidan för StringFormat.
TargetNullValue: kan anges som en
bindProp
=value
sträng i uttrycket, men detta beror på vilken typ av parameter som skickas. Om du skickar en referenstyp för värdet krävs en objektreferens, såsom en inbäddad StaticResource Markup Extension.UpdateSourceTrigger: värdet är ett konstant namn från UpdateSourceTrigger uppräkning. Till exempel
{Binding UpdateSourceTrigger=LostFocus}
. Specifika kontroller kan ha olika standardvärden för den här bindningsegenskapen. Se UpdateSourceTrigger.ValidatesOnDataErrors: Booleskt värde kan vara antingen
true
ellerfalse
. Standardvärdet ärfalse
. Se Kommentarer.ValidatesOnExceptions: Booleskt värde kan vara antingen
true
ellerfalse
. Standardvärdet ärfalse
. Se Kommentarer.XPath: en sträng som beskriver en sökväg till XMLDOM för en XML-datakälla. Se Binda till XML-data med hjälp av en XMLDataProvider- och XPath-frågor.
Följande är egenskaper för Binding som inte kan anges med hjälp av Binding
markeringstillägg/{Binding}
uttrycksformulär.
UpdateSourceExceptionFilter: Den här egenskapen förväntar sig en referens till en återanropsimplementering. Återanrop/metoder som inte är händelsehanterare kan inte användas i XAML-syntaxen.
ValidationRules: egenskapen tar en allmän samling ValidationRule objekt. Detta kan uttryckas som ett egenskapselement i ett Binding objektelement, men har ingen lättillgänglig attributparsningsteknik för användning i ett
Binding
uttryck. Se referensavsnittet för ValidationRules.
Anmärkningar
Viktig
När det gäller prioritet för beroendeegenskap motsvarar ett Binding
uttryck ett lokalt angivet värde. Om du anger ett lokalt värde för en egenskap som tidigare hade ett Binding
uttryck tas Binding
bort helt. Mer information finns i Dependencyegenskapsvärde företräde.
Beskrivning av databindning på grundläggande nivå beskrivs inte i det här avsnittet. Se Översikt över databindning.
Anmärkning
MultiBinding och PriorityBinding stöder inte en XAML-tilläggssyntax. Du använder i stället egenskapselement. Se referensavsnitt för MultiBinding och PriorityBinding.
Booleska värden för XAML är skiftlägesokänsliga. Du kan till exempel ange antingen {Binding NotifyOnValidationError=true}
eller {Binding NotifyOnValidationError=True}
.
Bindningar som omfattar dataverifiering anges vanligtvis av ett explicit Binding
element i stället för som ett {Binding ...}
uttryck, och det är ovanligt att ange ValidatesOnDataErrors eller ValidatesOnExceptions i ett uttryck. Det beror på att den tillhörande egenskapen ValidationRules inte enkelt kan anges i uttrycksformuläret. Mer information finns i Implementera bindningsverifiering.
Binding
är en markup-förlängning. Markeringstillägg implementeras vanligtvis när det finns ett krav på att undantagsattributvärden ska vara andra än literalvärden eller hanterarnamn, och kravet är mer globalt än typkonverterare som tillskrivs vissa typer eller egenskaper. Alla markeringstillägg i XAML använder {
och }
tecken i attributsyntaxen, vilket är den konvention som en XAML-processor identifierar att ett markeringstillägg måste bearbeta stränginnehållet. Mer information finns i Markup Extensions and WPF XAML.
Binding
är ett atypiskt tillägg på så sätt att den Binding-klass som implementerar tilläggsfunktionerna för WPF:s XAML-implementering även implementerar flera andra metoder och egenskaper som inte är relaterade till XAML. De andra medlemmarna är avsedda att göra Binding till en mer mångsidig och fristående klass som kan hantera många databindningsscenarier utöver att fungera som ett XAML-tillägg.
Se även
.NET Desktop feedback