{Binding} markup kiterjesztés

Megjegyzés:

Új kötési mechanizmus érhető el a Windows 10-hez, amely a teljesítményre és a fejlesztői hatékonyságra van optimalizálva. Lásd : {x:Bind} korrektúrakiterjesztés.

Megjegyzés:

Az adatkötés alkalmazásbeli {Binding} használatával kapcsolatos általános információkért (és a {x:Bind} és a {Binding} közötti teljes összehasonlításért tekintse meg az adatkötés részletes ismertetését.

A (z) {Binding} korrektúrabővítmény a vezérlők tulajdonságainak adatkötésére szolgál egy adatforrásból, például kódból származó értékekhez. A (z) {Binding} korrektúrakiterjesztés XAML betöltési időpontban a Kötés osztály egy példányává lesz konvertálva. Ez a kötési objektum lekéri az adatforrás egyik tulajdonságának értékét, és leküldi azt a vezérlő tulajdonságához. A kötési objektum igény szerint konfigurálható úgy, hogy megfigyelje az adatforrástulajdonság értékének változásait, és ezek alapján frissítse magát. Konfigurálható úgy is, hogy a vezérlőérték módosításait visszaküldje a forrástulajdonságba. Az adatkötés céltulajdonságának függőségi tulajdonságnak kell lennie. További információ: Függőségi tulajdonságok áttekintése.

A(z) {Binding} függőségi tulajdonsága elsőbbséget élvez a helyi értékekkel, és ha egy helyi értéket az imperatív kódban állít be, azzal eltávolítja a {Binding} jelölőkészletek hatását.

XAML-attribútumok használata

<object property="{Binding}" .../>
-or-
<object property="{Binding propertyPath}" .../>
-or-
<object property="{Binding bindingProperties}" .../>
-or-
<object property="{Binding propertyPath, bindingProperties}" .../>
Időszak Description
propertyPath A kötés tulajdonságútvonalát meghatározó sztring. További információ az alábbi Tulajdonságútvonal szakaszban található.
bindingProperties propName=érték[, propName=érték]*
Egy vagy több, név/érték pár szintaxisával megadott kötési tulajdonság.
propName A Kötés objektumon beállítani kívánt tulajdonság sztringneve. Például: "Konverter".
value A tulajdonság beállításának értéke. Az argumentum szintaxisa a kötésosztály tulajdonságainak tulajdonságától függ, amelyet az alábbi {Binding} szakaszsal lehet beállítani .

Tulajdonság elérési útja

Az elérési út azt a tulajdonságot írja le, amelyhez (a forrástulajdonsághoz) kötődik. Az elérési út egy pozícióparaméter, ami azt jelenti, hogy a paraméter nevét explicit módon ({Binding Path=EmployeeID}) használhatja, vagy megadhatja az első névtelen paraméterként ({Binding EmployeeID}).

Az elérési út típusa egy tulajdonság elérési útja, amely egy olyan sztring, amely az egyéni vagy keretrendszertípusú tulajdonság vagy altulajdonság értékét értékeli ki. A típus lehet dependencyObject, de nem szükséges. A tulajdonságútvonalak lépéseit pontokkal (.) tagolják, és több elválasztójelet is megadhat az egymást követő altulajdonságok közötti mozgáshoz. Használja a ponthatárolást, függetlenül attól, hogy milyen programozási nyelvre van szükség ahhoz az objektumhoz, amelyhez hozzá van kötve.

Ha például egy alkalmazott objektum utónévtulajdonságához szeretné kötni a felhasználói felületet, a tulajdonság elérési útja lehet "Employee.FirstName". Ha egy elemvezérlőt egy olyan tulajdonsághoz köt, amely egy alkalmazott függőit tartalmazza, a tulajdonság elérési útja lehet "Employee.Depends", és az elemvezérlő elemsablonja gondoskodik az elemek "Függők" elemének megjelenítéséről.

Ha az adatforrás gyűjtemény, akkor a tulajdonság elérési útja a gyűjtemény elemeit a helyük vagy az indexük alapján határozhatja meg. Például: "Teams[0]. Játékosok", ahol a "[]" literál a gyűjtemény első elemét meghatározó "0"-t tartalmazza.

Ha ElementName-kötést használ egy meglévő DependencyObjecthez, a csatolt tulajdonságokat a tulajdonság elérési útja részeként használhatja. Ha egyértelműsíteni szeretne egy csatolt tulajdonságot, hogy a csatolt tulajdonságnév köztes pontja ne minősüljön egy tulajdonság elérési útjának lépésének, zárójeleket helyezzen a tulajdonos által minősített csatolt tulajdonságnév köré; például (AutomationProperties.Name).

A tulajdonságelérési útvonal köztes objektumai tulajdonságpath objektumként vannak tárolva futásidejű ábrázolásban, de a legtöbb forgatókönyvnek nem kell egy PropertyPath-objektummal együttműködnie a kódban. Az XAML használatával általában megadhatja a szükséges kötési adatokat.

További információ a tulajdonságútvonalak sztringszintaxisáról, az animációs funkciók területeinek tulajdonságútvonalairól és egy PropertyPath-objektum felépítéséről: Tulajdonság-elérési út szintaxisa.

A(z) {Binding} használatával beállítható kötésosztály tulajdonságai

A(z) {Binding} a bindingProperties helyőrző szintaxissal van illusztrálva, mivel a kötésnek több olvasási/írási tulajdonsága is van, amelyeket a korrektúrakiterjesztésben állíthat be. A tulajdonságok bármilyen sorrendben beállíthatók vesszővel tagolt propName=értékpárokkal . Egyes tulajdonságokhoz olyan típusok szükségesek, amelyek nem rendelkeznek típuskonverzióval, ezért ezekhez a {Binding} fájlba beágyazott saját jelölőbővítményekre van szükség.

Ingatlan Description
Elérési út Lásd a fenti Tulajdonságút szakaszt .
Konverter Egy konverterobjektumot határoz meg, amelyet a kötési motor hív meg. A konverter a {StaticResource} jelölőbővítménnyel beállítható úgy, hogy hivatkozzon az adott objektumra egy erőforrás-szótárból.
ConverterLanguage A konverter által használandó kultúrát adja meg. (Ha Konvertert állít be.) A kultúra szabványalapú azonosítóként van beállítva. További információ: ConverterLanguage
ConverterParameter Konverterlogikában használható konverterparamétert ad meg. (Ha konvertert állít be.) A legtöbb konverter egyszerű logikát használ, amely lekér minden szükséges információt az átadott értékről az átalakításhoz, és nincs szükség ConverterParameter-értékre . A ConverterParameter paraméter összetettebb konverter-implementációkhoz készült, amelyek feltételes logikával rendelkeznek, amely lekulcsozza a ConverterParameterben átadott elemeket. Írhat olyan konvertert, amely nem sztringeket használ, de ez nem gyakori. További információt a ConverterParameter megjegyzései című témakörben talál.
Elemnév Egy adatforrást úgy határoz meg, hogy ugyanazon XAML-szerkezet egy másik elemére hivatkozik, amely rendelkezik Név tulajdonságtal vagy x:Name attribútummal. Ezt gyakran használják a kapcsolódó értékek megosztására, vagy egy felhasználói felületi elem altulajdonságainak használatával egy másik elem adott értékének megadására, például egy XAML-vezérlősablonban.
FallbackValue Olyan értéket ad meg, amely akkor jelenik meg, ha a forrás vagy az elérési út nem oldható fel.
Üzemmód A kötési módot a következő értékek egyikeként adja meg: "OneTime", "OneWay" vagy "TwoWay". Ezek a BindingMode enumerálás állandó nevének felelnek meg. Az alapértelmezett érték a "OneWay". Vegye figyelembe, hogy ez eltér a(z) {x:Bind}, azaz a "OneTime" alapértelmezett értékétől.
RelativeSource Egy adatforrást a kötési forrásnak a kötési cél helyéhez viszonyított pozíciójának leírásával határoz meg. Ezt leggyakrabban az XAML-vezérlősablonokon belüli kötésekben használják. A {RelativeSource} jelölőbővítmény beállítása.
Forrás Megadja az objektum adatforrását. A Kötési korrektúra bővítményen belül a Forrás tulajdonság objektumhivatkozást igényel, például {StaticResource} korrektúrakiterjesztés-hivatkozást . Ha ez a tulajdonság nincs megadva, az eljáró adatkörnyezet határozza meg a forrást. Jellemzőbb, hogy nem ad meg forrásértéket az egyes kötésekben, és inkább a megosztott DataContextre támaszkodik több kötés esetében. További információ: DataContext vagy Data binding in depth.
TargetNullValue A forrásérték feloldásakor megjelenítendő értéket ad meg, de explicit módon null értékű.
UpdateSourceTrigger Meghatározza a kötés forrásfrissítéseinek időzítését. Ha nincs meghatározva, az alapértelmezett érték az Alapértelmezett érték.

Megjegyzés:

Ha {x:Bind} jelölésről {Binding} jelölésre konvertálja, vegye figyelembe a Mode tulajdonság alapértelmezett értékeinek különbségeit.

A konverter, a ConverterLanguage és a ConverterLanguage mind a kötési forrásból származó érték vagy típus kötési céltulajdonságokkal kompatibilis típussá vagy értékké alakításának forgatókönyvéhez kapcsolódnak. További információkért és példákért tekintse meg az Adatkötés részletes adatkonvertálás című szakaszát.

Megjegyzés:

A Windows 10 1607-es verziójától kezdve az XAML-keretrendszer beépített logikai és láthatósági konvertert biztosít. A konverter a true értéket a Visible enumerálási értékhez, és a false értéket a Collapsed-hez rendeli, így a Visibility tulajdonságot konverter létrehozása nélkül is kötheti egy logikai értékhez. A beépített konverter használatához az alkalmazás minimális cél SDK-verziójának 14393-as vagy újabb verziónak kell lennie. Nem használható, ha az alkalmazás a Windows 10 korábbi verzióit célozza meg. További információ a célverziókról: Adaptív verziókód.

A forrás, a RelativeSource és az ElementName egy kötési forrást ad meg, így kölcsönösen kizárják őket.

Jótanács

Ha egyetlen kapcsos zárójelet kell megadnia egy értékhez, például az Elérési út vagy ConverterParameter, akkor előtte áll egy fordított perjel: \{. Másik lehetőségként zárja be a teljes karakterláncot, amely tartalmazza a menekítendő kapcsos zárójeleket egy másodlagos idézőjelkészletbe, például ConverterParameter='{Mix}'.

Példák

<!-- 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>

A második példa négy különböző kötési tulajdonságot állít be: ElementName, Path, Mode és Converter. Ebben az esetben az elérési út explicit módon kötési tulajdonságként van elnevezve. Az útvonal egy adatkötési forrásként értékelődik ki, amely egy másik objektum az ugyanabban a futásidejű objektumfában, amely egy csúszka, név szerint sliderValueConverter.

Figyelje meg, hogy a Converter tulajdonság értéke hogyan használ egy másik korrektúrakiterjesztést, a {StaticResource} korrektúrakiterjesztést, ezért itt két beágyazott korrektúrakiterjesztés-használat található. A rendszer először feldolgozza a belsőt, így amikor az erőforrás elérhetővé válik, van egy hasznos IValueConverter (egy egyedi osztály, amelyet az erőforrások local:S2Formatter eleme hoz létre), amelyet a kötés használhat.

Eszközök támogatása

A Microsoft Visual Studio Microsoft IntelliSense szolgáltatása megjeleníti az adatkörnyezet tulajdonságait a {Binding} írása közben az XAML korrektúraszerkesztőben. A(z) "{Binding" beírása után az elérési útnak megfelelő adatkörnyezet-tulajdonságok megjelennek a legördülő menüben. Az IntelliSense a kötés egyéb tulajdonságaival is segít. Ahhoz, hogy ez működjön, a korrektúralapon meg kell adnia az adatkörnyezetet vagy a tervezési időre vonatkozó adatkörnyezetet. Go To Definition (F12) a {Binding} használatával is működik. Másik lehetőségként használhatja az adatkötési párbeszédpanelt.