Sdílet prostřednictvím


Rozšíření značkovacího jazyka {Binding}

Poznámka:

Pro Windows 10 je k dispozici nový mechanismus vazby, který je optimalizovaný pro zvýšení výkonu a produktivity vývojářů. Viz rozšíření značek {x:Bind} .

Poznámka:

Obecné informace o používání datových vazeb v aplikaci s {Binding} (a podrobné porovnání {x:Bind} a {Binding}), najdete v tématu Datové vazby podrobně.

Rozšíření značek {Binding} slouží k navázání vlastnosti ovládacích prvků na hodnoty pocházející ze zdroje dat, jako je například kód. Rozšíření {Binding} značek je převedeno v době načtení XAML na instanci třídy Binding. Tento objekt vazby získá hodnotu z vlastnosti ve zdroji dat a přenese ji do vlastnosti ovládacího prvku. Objekt vazby lze volitelně nakonfigurovat tak, aby sledoval změny v hodnotě vlastnosti zdroje dat a aktualizoval sám na základě těchto změn. Volitelně lze také nakonfigurovat, aby byly změny v ovládací hodnotě vráceny zpět do zdrojové vlastnosti. Vlastnost, která je cílem datové vazby, musí být vlastnost závislosti. Další informace najdete v tématu Přehled vlastností závislostí.

{Binding} má stejnou prioritu vlastnosti závislosti jako místní hodnota a nastavení místní hodnoty v imperativním kódu odebere účinek všech {Binding} nastavených v kódu.

Použití atributu XAML

<object property="{Binding}" .../>
-or-
<object property="{Binding propertyPath}" .../>
-or-
<object property="{Binding bindingProperties}" .../>
-or-
<object property="{Binding propertyPath, bindingProperties}" .../>
termín Popis
propertyPath Řetězec, který určuje cestu vlastnosti pro vazbu. Více informací je v části Cesta k vlastnosti níže.
vlastnosti_vazby propName=hodnota[, propName=hodnota]*
Jedna nebo více vlastností vazby, které jsou zadány pomocí syntaxe páru název/hodnota.
názevVlastnosti Název řetězce, který určuje vlastnost, jež má být nastavena na objektu Binding. Například "Converter".
hodnota Hodnota, na kterou chcete nastavit vlastnost. Syntaxe argumentu závisí na vlastnosti Vlastnosti třídy Binding, kterou lze nastavit pomocí oddílu {Binding} níže.

Cesta k atributu

Cesta popisuje vlastnost, se kterou jste vázáni (zdrojová vlastnost). Cesta je poziční parametr, což znamená, že můžete použít název parametru explicitně ({Binding Path=EmployeeID}) nebo ho můžete zadat jako první nepojmenovaný parametr ({Binding EmployeeID}).

Typ Path je vlastnostní cesta, což je řetězec, který se vyhodnotí jako vlastnost nebo dílčí vlastnost vašeho vlastního typu nebo typu rámce. Typ může být, ale nemusí být, DependencyObject. Kroky v cestě u vlastnosti jsou odděleny tečkami (.) a můžete použít více oddělovačů pro procházení po sobě jdoucích dílčích vlastností. Použijte tečkovaný oddělovač bez ohledu na programovací jazyk použitý k implementaci objektu vázaného na.

Pokud například chcete vytvořit vazbu uživatelského rozhraní na vlastnost křestního jména objektu zaměstnance, cesta k vlastnosti může být "Employee.FirstName". Pokud provádíte vazbu ovládacího prvku položky na vlastnost, která obsahuje zaměstnancovy závislé osoby, vaše cesta k vlastnosti může být "Employee.Dependents" a šablona položky ovládacího prvku by se postarala o zobrazení položek v "Dependents".

Pokud je zdrojem dat kolekce, cesta k vlastnosti může určovat položky v kolekci podle jejich pozice nebo indexu. Například Teams[0]. Player", kde literál "[]" uzavře "0", která určuje první položku v kolekci.

Při použití ElementName vazby na existující DependencyObjectmůžete použít připojené vlastnosti jako součást cesty vlastnosti. Chcete-li odstranit nejednoznačnost připojené vlastnosti a zajistit, že zprostředkující tečka v názvu nebude považována za součást cesty k vlastnosti, umístěte kolem názvu připojené vlastnosti, která je kvalifikována vlastníkem, závorky; například ((AutomationProperties.Name)).

Zprostředkující objekt cesty vlastnosti je uložen jako PropertyPath v běhové reprezentaci, ale většina scénářů nebude muset pracovat s PropertyPath v kódu. Pomocí XAML můžete obvykle zadat informace o vazbě, které potřebujete.

Další informace o syntaxi řetězce pro vlastnostní cesty, cestách vlastností v oblastech animací a vytváření objektu PropertyPath naleznete v části Syntaxe vlastnostní cesty.

Vlastnosti třídy Binding, kterou lze nastavit pomocí {Binding}

{Binding} je znázorněno pomocí zástupné syntaxe vlastností vazby, protože existuje více vlastností pro čtení a zápis vazby , které lze nastavit v rozšíření jazyka značek. Vlastnosti lze nastavit v libovolném pořadí pomocí párů propName=value oddělených čárkami. Některé vlastnosti vyžadují typy, které nemají převod typu, takže tyto vyžadují vlastní značkovací rozšíření vnořená v rámci {Binding}.

Vlastnictví Popis
cesta Viz výše v sekci cesta k vlastnosti.
převaděče Určuje objekt převaděče, který je volán modulem vazebním. Převaděč lze nastavit v revizích pomocí rozšíření značek {StaticResource} odkazovat na tento objekt ze slovníku prostředků.
KonvertorJazyka Určuje kulturu, kterou má převaděč používat. (Pokud nastavujete Converter.) Kultura je nastavena jako identifikátor založený na standardech. Další informace naleznete v ConverterLanguage
ConverterParameter Určuje parametr převaděče, který lze použít v logice převaděče. (Pokud nastavujete Converter.) Většina převaděčů používá jednoduchou logiku, která získá všechny potřebné informace z předané hodnoty pro konverzi, a nepotřebují hodnotu parametru ConverterParameter. Parametr ConverterParameter je určen pro složitější implementace převaděčů, které obsahují podmíněnou logiku využívající informace předávané v ConverterParameter. Můžete napsat převaděč, který používá jiné hodnoty než řetězce, ale to je neobvyklé, viz Poznámky v ConverterParameter další informace.
ElementName Určuje zdroj dat odkazováním na jiný prvek ve stejném konstruktoru XAML, který má vlastnost Name nebo atribut x:Name. Často se používá ke sdílení souvisejících hodnot nebo použití dílčích vlastností jednoho prvku uživatelského rozhraní k poskytnutí konkrétní hodnoty pro jiný prvek, například v šabloně ovládacího prvku XAML.
fallbackValue Určuje hodnotu, která se má zobrazit, když nelze vyřešit zdroj nebo cestu.
režim Určuje režim vazby, jako jednu z těchto hodnot: "OneTime", "OneWay" nebo "TwoWay". Odpovídají názvům konstant výčtu BindingMode. Výchozí hodnota je OneWay. Všimněte si, že se liší od výchozího nastavení pro {x:Bind}, což je OneTime.
relativního zdroje Určuje zdroj dat popisem pozice zdroje vazby vzhledem k pozici cíle vazby. Nejčastěji se používá ve vazbách v rámci šablon ovládacích prvků XAML. Nastavení značkové rozšíření {RelativeSource}.
zdroje Určuje zdroj dat objektu. V rozšíření Vazby značky vyžaduje vlastnost Zdroj odkaz na objekt, například rozšíření značek {StaticResource}, odkaz. Pokud tato vlastnost není zadána, aktuální datový kontext určuje zdroj. Je obvyklejší nezadávat hodnotu zdroje v jednotlivých vazbách a místo toho se spoléhat na sdílenou DataContext pro více vazeb. Další informace naleznete v tématu DataContext nebo Datové vazby podrobně.
TargetNullValue Určuje hodnotu, která se má zobrazit, když je zdrojová hodnota vyřešena, ale je explicitně null.
UpdateSourceTrigger Určuje načasování aktualizací zdroje vazby. Pokud není zadáno, výchozí hodnota je Výchozí.

Poznámka Pokud převádíte označování z {x:Bind} na {Binding}, pak mějte na paměti rozdíly ve výchozích hodnotách pro vlastnost Mode.

Převaděč, ConverterLanguage a ConverterLanguage jsou všechny související se scénářem převodu hodnoty nebo typu ze zdroje vazby na typ nebo hodnotu, která je kompatibilní s cílovou vlastností vazby. Pro více informací a příklady si přečtěte sekci "Převody dat" v části Podrobně o datových vazbách.

Poznámka:

Počínaje verzí 1607 systému Windows 10 poskytuje rámec XAML integrovaný převodník z logické hodnoty na viditelnost. Převaděč mapuje true na hodnotu výčtu Visible a false na Skryté, abyste mohli vázat vlastnost Viditelnost na logickou hodnotu bez vytvoření převaděče. Pokud chcete použít integrovaný převaděč, minimální cílová verze sady SDK vaší aplikace musí být 14393 nebo novější. Nemůžete ho použít, když vaše aplikace cílí na starší verze Windows 10. Další informace o cílových verzích najdete v části adaptivní kód verze.

zdroj, RelativeSourcea ElementName určují zdroj vazby, takže se vzájemně vylučují.

Tip Pokud potřebujete zadat jednu složenou závorku pro hodnotu, například v Path nebo ConverterParameter, použijte před ní zpětné lomítko: \{. Případně uzavřete celý řetězec obsahující složené závorky, které potřebují escapování, do sekundárního páru uvozovek, například takto: "ConverterParameter='{Mix}'".

Příklady

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

Druhý příklad nastaví čtyři různé vazby vlastnosti: ElementName, Cesta, Režim a Converter. Path je v tomto případě explicitně pojmenován jako vlastnost Binding. Cesta je vyhodnocena jako zdroj vazby dat, který je dalším objektem ve stejném stromu objektů za běhu, posuvník pojmenovaný sliderValueConverter.

Všimněte si, jak hodnota vlastnosti Převaděč používá jiné rozšíření značek, rozšíření značek {StaticResource}, takže zde jsou dvě vnořené rozšíření značek. Vnitřní se vyhodnotí jako první, takže jakmile se prostředek získá, je praktické IValueConverter (vlastní třída, která je vytvořena instancí local:S2Formatter elementu v prostředcích), kterou vazba může použít.

Podpora nástrojů

Microsoft IntelliSense v sadě Microsoft Visual Studio zobrazuje vlastnosti kontextu dat při vytváření {Binding} v editoru značek XAML. Jakmile zadáte "{Binding", vlastnosti kontextu dat vhodné pro Path se zobrazí v rozbalovacím seznamu. IntelliSense také pomáhá s dalšími vlastnostmi vazby. Aby to fungovalo, musíte mít na značkovací stránce buď kontext dat, nebo kontext dat v době návrhu. Přejít na definici (F12) funguje také s {Binding}. Případně můžete použít dialogové okno datové vazby.