Dela via


{Binding} markeringstillägg

Anmärkning

En ny bindningsmekanism är tillgänglig för Windows 10, som är optimerad för prestanda och utvecklarproduktivitet. Se {x:Bind} markeringstillägg.

Anmärkning

Allmän information om hur du använder databindning i din app med {Binding} (och för en fullständig jämförelse mellan {x:Bind} och {Binding}) finns i Databindning på djupet.

Markeringstillägget {Binding} används för databindningsegenskaper för kontroller till värden som kommer från en datakälla, till exempel kod. Markeringstillägget {Binding} konverteras vid XAML-inläsningstid till en instans av klassen Bindning . Det här bindningsobjektet hämtar ett värde från en egenskap på en datakälla och överför det till egenskapen på kontrollen. Bindningsobjektet kan eventuellt konfigureras för att observera ändringar i värdet för datakällans egenskap och uppdatera sig själv baserat på dessa ändringar. Du kan också konfigurera den för att skicka tillbaka ändringar till kontrollvärdet till källegenskapen. Egenskapen som är målet för en databindning måste vara en beroendeegenskap. Mer information finns i Översikt över beroendeegenskaper.

{Binding} har samma beroendeegenskapsprioritet som ett lokalt värde, och om du anger ett lokalt värde i imperativ kod tar du bort effekten av alla {Binding} som anges i markering.

XAML-attributanvändning

<object property="{Binding}" .../>
-or-
<object property="{Binding propertyPath}" .../>
-or-
<object property="{Binding bindingProperties}" .../>
-or-
<object property="{Binding propertyPath, bindingProperties}" .../>
Begrepp Description
propertyPath En sträng som anger egenskapssökvägen för bindningen. Mer information finns i avsnittet Egenskapens sökväg nedan.
bindingProperties propName=value[, propName=value]*
En eller flera bindningsegenskaper som anges med hjälp av en syntax för namn/värdepar.
propName Strängnamnet på egenskapen som ska anges för bindningsobjektet . Till exempel "Konverterare".
value Värdet som egenskapen ska anges till. Argumentets syntax beror på egenskapen egenskaper för klassen Bindning som kan anges med avsnittet {Binding} nedan.

Egenskapsväg

Sökvägen beskriver den egenskap som du binder till (källegenskapen). Sökvägen är en positionsparameter, vilket innebär att du kan använda parameternamnet explicit ({Binding Path=EmployeeID}), eller så kan du ange den som den första namnlösa parametern ({Binding EmployeeID}).

Typen av sökväg är en egenskapssökväg, som är en sträng som utvärderas till en egenskap eller underegenskap av antingen din anpassade typ eller en ramverkstyp. Typen kan vara, men behöver inte vara, ett DependencyObject. Steg i en egenskapssökväg avgränsas av punkter (.), och du kan inkludera flera avgränsare för att bläddra i efterföljande underegenskaper. Använd punktavgränsaren oavsett vilket programmeringsspråk som används för att implementera objektet som är bundet till.

Om du till exempel vill binda användargränssnittet till ett medarbetares objekts förnamnsegenskap kan din egenskapssökväg vara "Employee.FirstName". Om du binder en objektkontroll till en egenskap som innehåller en anställds beroenden kan din egenskapssökväg vara "Employee.Dependents" och objektmallen för objektkontrollen tar hand om att visa objekten i "Beroenden".

Om datakällan är en samling kan en egenskapssökväg ange objekt i samlingen efter deras position eller index. Till exempel "Teams[0]. Spelare", där literalen "[]" omsluter "0" som anger det första objektet i en samling.

När du använder en ElementName-bindning till en befintlig DependencyObject kan du använda anslutna egenskaper som en del av egenskapssökvägen. Om du vill särskilja en bifogad egenskap så att den mellanliggande punkten i det bifogade egenskapsnamnet inte betraktas som ett steg i en egenskapssökväg, placerar du parenteser runt det ägarkvalificerade bifogade egenskapsnamnet; till exempel (AutomationProperties.Name).

Ett mellanliggande objekt för egenskapssökväg lagras som ett PropertyPath-objekt i en körningsrepresentation, men de flesta scenarier behöver inte interagera med ett PropertyPath-objekt i koden. Du kan vanligtvis ange den bindningsinformation som du behöver med hjälp av XAML.

Mer information om strängsyntaxen för en egenskapssökväg, egenskapssökvägar i funktionsområden för animering och konstruera ett PropertyPath-objekt finns i Syntax för egenskapssökväg.

Egenskaper för klassen Bindning som kan anges med {Binding}

{Binding} illustreras med platshållarsyntaxen bindingProperties eftersom det finns flera läs-/skrivegenskaper för en bindning som kan anges i markeringstillägget. Egenskaperna kan anges i valfri ordning med kommaavgränsade propName-värdepar=. Vissa av egenskaperna kräver typer som inte har någon typkonvertering, så dessa kräver markeringstillägg som är egna kapslade i {Binding}.

Fastighet Description
Sökväg Se avsnittet Egenskapssökväg ovan.
Omvandlare Anger ett konverterarobjekt som anropas av bindningsmotorn. Konverteraren kan anges i markup med hjälp av markeringstillägget {StaticResource} för att referera till objektet från en resursordbok.
ConverterLanguage Anger vilken kultur som ska användas av konverteraren. (Om du ställer in Konverterare.) Kulturen anges som en standardbaserad identifierare. Mer information finns i ConverterLanguage
ConverterParameter Anger en konverterarparameter som kan användas i konverterarlogik. (Om du ställer in Konverterare.) De flesta konverterare använder enkel logik som hämtar all information de behöver från det angivna värdet för att konvertera och behöver inte ett ConverterParameter-värde . Parametern ConverterParameter är till för mer komplexa konverterarimplementeringar som har villkorslogik som nycklar av det som skickas i ConverterParameter. Du kan skriva en konverterare som använder andra värden än strängar, men detta är ovanligt. Mer information finns i Anmärkningar i ConverterParameter .
ElementName Anger en datakälla genom att referera till ett annat element i samma XAML-konstruktion som har en namnegenskap eller x:Name-attribut. Detta används ofta för att dela relaterade värden eller använda underegenskaper för ett gränssnittselement för att ange ett specifikt värde för ett annat element, till exempel i en XAML-kontrollmall.
FallbackValue Anger ett värde som ska visas när källan eller sökvägen inte kan matchas.
Läge Anger bindningsläget som ett av följande värden: "OneTime", "OneWay" eller "TwoWay". Dessa motsvarar de konstanta namnen på BindingMode-uppräkningen . Standardvärdet är "OneWay". Observera att detta skiljer sig från standardvärdet för {x:Bind}, som är "OneTime".
RelativeSource Anger en datakälla genom att beskriva bindningskällans position i förhållande till bindningsmålets position. Detta används oftast i bindningar i XAML-kontrollmallar. Ange markeringstillägget {RelativeSource}.
Källa Anger objektdatakällan. I tillägget Bindningsmarkering kräver egenskapen Source en objektreferens, till exempel en referens för {StaticResource}-markeringstillägget . Om den här egenskapen inte anges, anger den gällande datakontexten källan. Det är mer typiskt att inte ange ett källvärde i enskilda bindningar och i stället förlita sig på den delade DataContext för flera bindningar. Mer information finns i DataContext eller Databindning på djupet.
TargetNullValue Anger ett värde som ska visas när källvärdet matchas men är explicit null.
UpdateSourceTrigger Anger tidpunkten för bindning av källuppdateringar. Om det är ospecificerat är standardvärdet Standard.

Anmärkning

Om du konverterar markering från {x:Bind} till {Binding} bör du vara medveten om skillnaderna i standardvärden för egenskapen Mode .

Konverteraren, ConverterLanguage och ConverterLanguage är alla relaterade till scenariot att konvertera ett värde eller en typ från bindningskällan till en typ eller ett värde som är kompatibelt med bindningsmålegenskapen. Mer information och exempel finns i avsnittet "Datakonverteringar" i Databindning på djupet.

Anmärkning

Från och med Windows 10 version 1607 tillhandahåller XAML-ramverket en inbyggd boolesk till synlighetskonverterare. Konverteraren mappar sant till det synliga uppräkningsvärdet och falskt till Komprimerad så att du kan binda en synlighetsegenskap till ett booleskt värde utan att skapa en konverterare. Om du vill använda den inbyggda konverteraren måste appens lägsta SDK-målversion vara 14393 eller senare. Du kan inte använda den när din app riktar in sig på tidigare versioner av Windows 10. Mer information om målversioner finns i Versionsanpassad kod.

Källa, RelativeSource och ElementName anger en bindningskälla, så de är ömsesidigt uteslutande.

Tips/Råd

Om du behöver ange en enda klammerparentes för ett värde, till exempel i Path eller ConverterParameter, föregår du det med ett omvänt snedstreck: \{. Alternativt kan du omsluta hela strängen som innehåller de klammerparenteser som behöver undvikas i en sekundär citatuppsättning, till exempel ConverterParameter='{Mix}'.

Examples

<!-- binding a UI element to a view model -->
<Page ... >
    <Page.DataContext>
        <local:BookstoreViewModel/>
    </Page.DataContext>

    <GridView ItemsSource="{Binding BookSkus}" SelectedItem="{Binding SelectedBookSku, Mode=TwoWay}" ... />
</Page>
<!-- binding a UI element to another UI element -->
<Page ... >
    <Page.Resources>
        <local:S2Formatter x:Key="GradeConverter"/>
    </Page.Resources>

    <Slider x:Name="sliderValueConverter" ... />
    <TextBox Text="{Binding Path=Value, ElementName=sliderValueConverter,
        Mode=OneWay,
        Converter={StaticResource GradeConverter}}"/>
</Page>

I det andra exemplet anges fyra olika bindningsegenskaper : ElementName, Path, Mode och Converter. Sökvägen i det här fallet är explicit namngiven som en Bindning-egenskap. Sökvägen utvärderas till en databindningskälla som är ett annat objekt i samma körningsobjektträd, ett skjutreglage med namnet sliderValueConverter.

Observera hur konverterarens egenskapsvärde använder ett annat tillägg för markering, {StaticResource} markeringstillägg, så det finns två kapslade markeringstilläggsanvändningar här. Den inre utvärderas först, så att när resursen har hämtats finns det en praktisk IValueConverter (en anpassad klass som instansieras av elementet local:S2Formatter i resurser) som bindningen kan använda.

Verktygsstöd

Microsoft IntelliSense i Microsoft Visual Studio visar egenskaperna för datakontexten när du redigerar {Binding} i XAML-markeringsredigeraren. Så snart du skriver {Binding visas datakontextegenskaper som är lämpliga för Sökväg i listrutan. IntelliSense hjälper också till med de andra egenskaperna för Bindning. För att detta ska fungera måste du ha antingen datakontexten eller designtidsdatakontexten i markup-sidan. Gå till definitionen (F12) fungerar också med {Binding}. Du kan också använda databindningsdialogrutan.