Data binding koncept ve WPF frameworku je postaven na skutečnosti, která by se dala vyjádřit jednoduchou větou – cokoliv se dá jednoduše provázat s čímkoliv. A to jak jednosměrně, tak i obousměrně.
Díky tomuto konceptu může být prezentační logika striktně oddělena od aplikační logiky a od dat. Koncept WPF je postaven na návrhovém vzoru MVVM a umožňuje vyvíjet aplikační front-end vývojářům, kteří nepotřebují znát aplikační pozadí ani způsob uložení a tahání dat.
Vázat data lze jak na business objekty View-Model vrstvy, ale lze vázat i na jiné prvky v prezentační vrstvě. Já teď ukážu vázání na property aktuální třídy, což je problém, který jsem před nedávnem řešil.
Vezměme si následující případ…
Uživatel v nějakém datagridu klikne na položku a očekává, že se otevře nějaké dialogové okno, kde bude detail daného záznamu se všemi položkami, on bude moci ty položky upravit, uložit a zavřít dialog. Jak na to?
Náš DataGrid máme nabindovaný na nějaký objekt typu List<T>, nebo IObservable<T>, a to pomocí CollectionViewSource komponenty. Nějak takhle…
V každém řádku je tlačítko, kterým vyvoláme otevření dialogu a předáme mu přes property set daný záznam.
Teď už je potřeba jenom si daný záznam v té cílové třídě převzít a zaregistrovat. Potřebuji k tomu třídu DependencyProperty a její metodu Register()…
a pak samotnou property Record…
Nakonec už stačí jednotlivým prvkům v okně nastavit Path na příslušné pole daného záznamu…
A to je v podstatě vše. Po submitu formuláře si pak nadřazené okno převezme property Record z dialogu, který má díky provázanosti na pole aktualizované hodnoty a naloží s ním podle svého – v tomto případě zavolá příkaz Update v obslužném objektu a aktualizuje grid.
Komentování je uzavřeno.