Skvělou novinkou v Universal Windows Platform XAMLu oproti WPF je {x:Bind}
. Pomocí něho se data-binding vhodnocuje v čase kompilace, namísto nutnosti provádět reflexi, což je nejen překlepu-vdornější, ale zároveň zvyšuje výkon za běhu. Jediná "otravnost" oproti klasickému {Binding}
je odlišné výchozí nastavení jeho módu – namísto OneWay
používá OneTime
. Ačkoliv toto opět napomáhá lepšímu výkonu pro neměnná data, je až nepříjemně snadné zapomenout explicitně uvést OneWay
tam, kde je to třeba. Navíc, pokud zobrazujeme více hodnot z měnícího se datového zdroje, je nutnost pokaždé uvádět Mode
. Naštěstí existuje řešení!
x:DefaultBindMode
V SDK verze 14393 přibyl nový atribut x:DefaultBindMode
. Tato funkce umožňuje nastavit výchozí mód {x:Bind}
pro element a jeho děti v XAML stromě. Uveďme si jako příklad následující úryvek XAMLu:
Protože mód nebyl explicitně nastaven, je OneTime
a po iniciálním vyhodnocení hodnot se dále změny neprojeví. Nyní to změňme pomocí x:DefaultBindMode
:
A je to – všechny TextBlock
elementy se budou nyní měnit svůj text při každé změně navázaných vlastností. Abychom si to ještě více usnadnili, pokud víme že v daném XAML souboru budou všechny bindingy nejspíše dynamické, můžeme změnit x:DefaultBindMode
na úrovní root elementu:
Samozřejmě je také snadné nastavení kdykoliv explicitně přepsat:
Zatímco TextBlock
použije OneWay
mód, TextBox
použije TwoWay
. Skvělé využití má DefaultBindMode
také při vývoji formulářů. Můžeme snadno nastavit výchozí hodnotu na TwoWay
a nadále na mód nemusíme pamatovat:
x:DefaultBindMode
je malá, ale velmi praktická vlastnost XAMLu, která práci s x:Bind
opravdu zjednodušuje!