Sdílet prostřednictvím


Rozšíření pro vazbu značek

Odkládá hodnotu vlastnosti pro hodnotu svázanou s daty, vytváří objekt prostřednického výrazu a interpretuje datový kontext, který se vztahuje na prvek a jeho vazbu za běhu.

Použití výrazů vazby

<object property="{Binding}" .../>
-or-
<object property="{Binding  bindProp1=value1[, bindPropN=valueN]*}" ...
/>
-or-
<object property="{Binding path}" .../>
-or
<object property="{Binding path[, bindPropN=valueN]*}" .../>

Poznámky ke syntaxi

V těchto syntaxích nejsou [] a * literály. Jsou součástí zápisu, který označuje, že lze použít nulové nebo více dvojic bindProp=value, s , oddělovačem mezi nimi a předchozími dvojicemi bindProp=value.

Všechny vlastnosti uvedené v části Vlastnosti vazby, které lze nastavit pomocí rozšíření vazby, lze místo toho nastavit pomocí atributů elementu objektu Binding . To však není skutečné použití Binding rozšíření značek, jde pouze o obecné zpracování XAML atributů, které nastavují vlastnosti třídy CLR Binding. Jinými slovy, <BindingbindProp1="value1"[bindPropN="valueN"]*/> je ekvivalentní syntaxe pro atributy použití elementu Binding objektu namísto použití výrazu Binding. Informace o použití atributu XAML pro konkrétní vlastnosti Bindingnaleznete v části Použití atributů XAML příslušné vlastnosti Binding v knihovně tříd rozhraní .NET Framework.

Hodnoty XAML

Hodnota Popis
bindProp1, bindPropN Název vlastnosti Binding nebo BindingBase, která se má nastavit. Ne všechny Binding vlastnosti lze nastavit pomocí rozšíření Binding a některé vlastnosti lze nastavit v rámci výrazu Binding pouze pomocí dalších vnořených značkovacích rozšíření. Viz část Vlastnosti vazby, které lze nastavit pomocí rozšíření vazby.
value1, valueN Hodnota, na kterou chcete nastavit vlastnost. Zpracování hodnoty atributu je nakonec specifické pro typ a logiku konkrétní Binding vlastnosti, která se nastavuje.
path Řetězec cesty, který nastaví implicitní Binding.Path vlastnost. Viz také PropertyPath XAML Syntax.

Nekvalifikovaný {Binding}

Použití {Binding} zobrazené v části Použití vazby výrazu Binding vytvoří objekt s výchozími hodnotami, které zahrnují iniciály Binding.Pathnull. To je stále užitečné v mnoha scénářích, protože vytvořený Binding může spoléhat na klíčové vlastnosti datové vazby, jako jsou Binding.Path a Binding.Source, které jsou nastaveny v kontextu dat za běhu. Další informace o konceptu kontextu dat najdete v tématu Datové vazby.

Implicitní cesta

Rozšíření označování Binding se používá Binding.Path jako koncepční "výchozí vlastnost", kde Path= se ve výrazu nemusí objevovat. Pokud zadáte Binding výraz s implicitní cestou, musí se implicitní cesta zobrazit jako první ve výrazu, před všemi dalšími dvojicemi bindProp=value, ve kterých je vlastnost Binding určena názvem. Příklad: {Binding PathString}, kde PathString je řetězec, který je vyhodnocen jako hodnota Binding.Path ve Binding vytvořeném použitím rozšíření značek. Za oddělovač čárky můžete přidat implicitní cestu s jinými pojmenovanými vlastnostmi, například {Binding LastName, Mode=TwoWay}.

Vlastnosti vazby, které lze nastavit pomocí rozšíření vazby

Syntaxe zobrazená v tomto tématu používá obecnou bindProp=value aproximaci, protože existuje mnoho vlastností čtení a zápisu BindingBase nebo Binding které lze nastavit prostřednictvím Binding syntaxe rozšíření značek nebo výrazu. Mohou být nastaveny v libovolném pořadí s výjimkou implicitního Binding.Path. (Máte možnost explicitně zadat Path=, v takovém případě může být nastavena v libovolném pořadí). V podstatě můžete nastavit nula nebo více vlastností v následujícím seznamu pomocí bindProp=value párů oddělených čárkami.

Několik z těchto hodnot vlastností vyžaduje typy objektů, které nepodporují převod nativního typu z textové syntaxe v XAML, a proto vyžadují rozšíření značek, aby byla nastavena jako hodnota atributu. Další informace najdete v části Použití atributů XAML v knihovně tříd rozhraní .NET Framework pro každou vlastnost; Řetězec, který použijete pro syntaxi atributu XAML s použitím rozšíření nebo bez dalších značek, je v podstatě stejná jako hodnota, kterou zadáte ve výrazuBinding, s výjimkou, že uvozovky neumisťujete kolem každéhobindProp=valueve výrazu.Binding

Následující vlastnosti Binding nelze nastavit pomocí rozšíření značek Binding ani výrazu {Binding}.

  • UpdateSourceExceptionFilter: Tato vlastnost očekává odkaz na implementaci zpětného volání. Zpětná volání nebo metody, které nejsou obslužnými rutinami událostí, nelze v syntaxi XAML odkazovat.

  • ValidationRules: Vlastnost přebírá obecnou kolekci ValidationRule objektů. Lze to vyjádřit jako prvek vlastnosti v elementu Binding objektu, ale nemá žádnou snadno dostupnou metodu parsování atributů pro použití ve výrazu Binding . Viz referenční téma pro ValidationRules.

  • XmlNamespaceManager

Poznámky

Důležité

Z hlediska priority Binding vlastnosti závislosti je výraz ekvivalentní místně nastavené hodnotě. Pokud nastavíte místní hodnotu pro vlastnost, která dříve měla Binding výraz, Binding je zcela odebrána. Podrobnosti naleznete v tématu Priorita hodnoty vlastnosti závislosti.

Toto téma nepokrývá popis datové vazby na základní úrovni. Viz přehled datových vazeb.

Poznámka:

MultiBinding a PriorityBinding nepodporují syntaxi rozšíření XAML. Místo toho byste použili prvky vlastností. Viz referenční témata pro MultiBinding a PriorityBinding.

Logické hodnoty XAML nerozlišují malá a velká písmena. Můžete například zadat buď {Binding NotifyOnValidationError=true} nebo {Binding NotifyOnValidationError=True}.

Vazby, které zahrnují ověření dat, jsou obvykle určeny explicitním Binding prvkem, nikoli jako {Binding ...} výraz, a nastavení ValidatesOnDataErrors nebo ValidatesOnExceptions ve výrazu je neobvyklé. Důvodem je to, že doprovodnou vlastnost ValidationRules nelze snadno nastavit ve formuláři výrazu. Další informace naleznete v tématu Implementace ověřování vazby.

Binding je rozšíření pro značkování. Rozšíření značek se obvykle implementují v případě, že existuje požadavek, aby hodnoty atributů byly jiné než doslovné hodnoty nebo názvy obslužných rutin, a požadavek je více globální než převaděče typů přiřazených k určitým typům nebo vlastnostem. Všechna rozšíření značek v XAML používají { a } znaky v syntaxi atributů, což je konvence, kterou procesor XAML rozpozná, že rozšíření značek musí zpracovat obsah řetězce. Další informace naleznete v tématu Rozšíření značek a WPF XAML.

Binding je atypická rozšíření značek v tom, že třída Binding, která implementuje rozšiřující funkce pro WPF implementaci XAML, také implementuje několik dalších metod a vlastností, které s XAML nesouvisejí. Ostatní členové jsou určeni k tomu, aby byla Binding všestrannější a samostatná třída, která může řešit mnoho scénářů datových vazeb kromě fungování jako rozšíření značek XAML.

Viz také