Vázání dat Data Binding

Slides:



Advertisements
Podobné prezentace
Funkce Připomeňme si program pro výpočet faktoriálu:
Advertisements

Pole, ukazatele a odkazy
Uživatelská rozhraní Uživatelská rozhraní 9. cvičení.
PJV151 Vnořené a vnitřní členy mohou být členy tříd a interfejsů. Je-li X obalem Y a Y je obalem Z, pak Z získá jméno X$Y$Z - kompilací vzniknou classy.
Čtvrté cvičení Objektové programování Objektový model v Javě
Objektové orientované programování Objektově orientované problémy v PHP Lukáš Masopust 2008.
PRÁCE S VLÁKNY A APLIKAČNÍ DOMÉNY V.NET FRAMEWORK APLIKACÍCH Architektura technologie.NET Jan Martinovič, FEI - Katedra Informatiky.
Seminář C++ 4. cvičení Objekty Ing. Jan Mikulka. Co je objekt ► obraz třídy i instance ► třída – definovaná za pomocí klíčového slova class ► instance.
Čísla Desetinná čísla. čísla desetinná se v PC ukládají jiným způsobem než čísla celá – výpočty s nimi provádí dvě odlišné části procesoru při výpočtech.
KIV/PPA1 cvičení 8 Cvičící: Pavel Bžoch. Osnova cvičení Objekty v Javě Třída Konstruktor Metody Metody a proměnné třídy x instance Program sestávající.
C# - předávání parametrů Centrum pro virtuální a moderní metody a formy vzdělávání na Obchodní akademii T.G. Masaryka, Kostelec nad Orlicí.
IB111 Programování a algoritmizace
Šesté cvičení Výjimky Balíky.
Netrvaloppa21 Vytvořte třídu Student pro reprezentaci struktury student na ZČU. Atributy třídy budou fakulta a osobniCislo. Název třídy: Student proměnné.
C – jak na procedury Mgr. Lenka Švancarová. C – procedury #include int main() { printf("Ahoj\n"); return(0); } #include void pozdrav(void) { printf("Ahoj\n");
FEL Komunikátor. Memory Leak program konsumuje operační paměť, kterou neumožňuje uvolnit o uvolnění paměti stará Garbage Collector ▫plně v režii Java.
PŘÍKAZ while úkol 1_42.
Jazyk C A0B36PRI - PROGRAMOVÁNÍ Část II.
Kam se ubírá jazyk C#? Dr. Ing. Dalibor Kačmář Academic Developer Evangelist Developer & Platform Evangelist Group Microsoft Czech & Slovakia Anders Hejlsberg.
Windows Presentation Foundation Data Binding
Tabulkový procesor Formuláře – interaktivní prvky v Excelu Autorem materiálu a všech jeho částí, není-li uvedeno jinak, je Růžena Hynková. Dostupné z Metodického.
Programování v jazyce C++ Dědičnost a polymorfismus.
NÁZEV ŠKOLY: S0Š Net Office, spol. s r.o., Orlová-Lutyně AUTOR: Ing. Adéla Tomalová NÁZEV: Podpora výuky v technických oborech TEMA: Objektově orientované.
Memento. Motivace – kalkulačka 210° sin * /20 ? 0.25 ^2 ?
PJV15 1 Vnořené ( nested ) a vnitřní ( inner ) členy Třídy či interfejsy mohou být členy tříd či interfejsů. Je-li X obalem Y a Y obalem Z, pak Z získá.
Výukový materiál zpracován v rámci projektu
Microsoft Excel verze 2010 Mgr. Přemysl Kejzlar.
NÁZEV ŠKOLY: S0Š Net Office, spol. s r.o., Orlová-Lutyně
Výukový materiál zpracován v rámci projektu
Výukový materiál zpracován v rámci projektu
Výukový materiál zpracován v rámci projektu
Výukový materiál zpracován v rámci projektu
Přetěžování Datové typy.
Ovládací prvky (1) Ovládací prvky jsou ve WPF reprezentovány třídami (podobně jako ve Windows Forms) Lze je rozdělit do následujících skupin: tlačítka:
State 1.
Programování v jazyce C++
Abstraktní datové typy
Rysy MS Windows Možnost multitaskingu a multithreadingu
Excel – tabulkový procesor
Jaroslav Kudr pro OATGM
Typový příklad 3 – zadání 1
EU peníze školám Základní škola , Znojmo, Mládeže
Tisk z MS Windows (1) Pro účely tisku na tiskárnách Windows Forms poskytují třídu PrintDocument Třída PrintDocument je definována ve jmenném prostoru:
Datové vazby (1) Datová vazba (data binding) je proces, který ustanovuje spojení mezi uživatelským rozhra-ním aplikace a její aplikační logikou Poskytuje.
TÉMA: Počítačové systémy
Inf Tabulkový procesor - formátování
Databáze MS ACCESS 2010.
Abstract Factory.
Název projektu: ZŠ Háj ve Slezsku – Modernizujeme školu
Výukový materiál zpracován v rámci projektu
Cvičení 4 Dědičnost objektů.
Informatika textový editor - WORD
Logické zdroje (1) Logické zdroje (resources) dovolují definovat hodnoty, které mohou být následně v jazyku XAML nebo v kódu na pozadí využity na růz-ných.
Změna velikosti, otočení fotografie
WORKSHOP Ochrana dat (GDPR)
Dialogová okna (1) Dialogová okna mohou být ve WPF (podobně jako ve Windows Forms) implementována jako: modální: zobrazení se provede voláním metody ShowDialog.
Typy Oken, Zobrazení a Konfigurace
MU002 Informatika II Základy algoritmizace 1/13
Builder „Návrhový vzor oddělující konstrukci složitých objektů od jejich reprezentace. Čímž je možné použít stejný proces konstrukce pro rozdílné reprezentace.“
Název školy: Autor: Název: Číslo projektu: Název projektu:
private var hodnota:number
C# přehled vlastností.
Ovládací prvky Ing. Petr Voborník, Ph.D.
Funkce v jazyce C = „množina“ operací, která provádí nějakou činnost s různými vstupy odstranění vícenásobného psaní či vkládání téhož kódu a lepší přehlednost.
DBC WPF.
Výčtové typy ( Java 5 ) Výčtové typy jsou speciální třídy zavedené pro větší bezpečí a pohodlí. V nejjednodušší variantě se definují příkladmo takto:
Opakování ze 4. cvičení int a; printf("Zadej číslo: ");
Adapter
Bridge.
Class Diagrams.
Transkript prezentace:

Vázání dat Data Binding Ing. Petr Voborník, Ph.D.

Vázání dat Datové objekty implementují rozhraní INotifyPropertyChanged Ovládací prvky editovanou hodnotu provážou s vlastností objektu přes Binding Hodnotu lze během editace v ovládacím prvku konvertovat přes IValueConverter Vlastní ovládací prvky, potomky třídy BindableObject, mohou mít své propojitelné vlastnosti

Datové objekty Rozhraní INotifyPropertyChanged pro datové objekty Přes událost PropertyChanged oznamuje okolí, že došlo ke změně hodnoty vlastnosti Tuto událost je potřeba volat v set-kódu vlastností public class Osoba : INotifyPropertyChanged { public event PropertyChangedEventHandler PropertyChanged; protected void OnPropertyChanged([CallerMemberName] string propName = null) => PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propName)); private string jmeno; public string Jmeno { get { return jmeno; } set { jmeno = value; OnPropertyChanged(); } }

Provázání objektu s ovládacím prvkem v1 V XAMLu se do editované vlažnosti ovládacího prvku zapíše {Binding Jmeno} Přes C# se buď přímo tomuto prvku nebo některému z kontejnerů, ve kterém se nachází, nastaví BindingContext na objekt, hodnoty jehož vlastností se mají editovat XAML <StackLayout x:Name="sLayout"> <Entry Text="{Binding Jmeno}" /> </StackLayout> C# var osoba = new Osoba { Jmeno = "Alois" }; sLayout.BindingContext = osoba;

Provázání objektu s ovládacím prvkem v2 Provázání se přes {Binding...} nemusí provést pouze přes XAML, ale jde to i v C# Pro ovládací prvek se zavolá metoda SetBinding s parametry určujícími jaká její vlastnost se provazuje a názvem vlastnosti datového objektu, která se s editorem má provázat var eJmeno = new Entry(); eJmeno.SetBinding(Entry.TextProperty, "Jmeno"); var osoba = new Osoba { Jmeno = "Alois" }; eJmeno.BindingContext = osoba;

Další parametry vázání dat Mode – BindingMode: OneWay, OneWayToSource, TwoWay StringFormat – parametrický formát ("Ahoj {0}!") Converter – konverze hodnot... <StackLayout x:Name="sLayout"> <Entry Text="{Binding Jmeno, Mode=TwoWay}" /> <Label Text="{Binding Jmeno, Mode=OneWay, StringFormat='Jméno: {0}'}" /> </StackLayout>

Provázání dvou prvků bez datového objektu Vlastnosti ovládacích prvků lze provázat i bez nutnosti existence datového objektu Jeden prvek pak hodnotu umožňuje měnit, druhý ji může třeba „nějak“ zobrazovat Provázání se nastaví v C#, kdy zdrojem hodnot (BindingContext) pro zobrazující prvek je prvek umožňující změnu hodnoty XAML <StackLayout> <Slider x:Name="sProcent" Minimum="0" Maximum="100" Value="20" /> <Label x:Name="lProcent" /> </StackLayout> C# lProcent.SetBinding(Label.TextProperty, "Value", stringFormat: "{0}%"); lProcent.BindingContext = sProcent;

Konverze hodnot Třída implementuje rozhraní IValueConverter s metodami Convert – převod hodnoty z objektu pro editor ConvertBack – převod hodnoty z editoru pro objekt public class IntToStringConverter : IValueConverter { public object Convert(object value, Type targetType, object parameter, CultureInfo culture) return System.Convert.ToString(value); // int => string } public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) if (int.TryParse(value as string, out int result)) // string => int return result; return 0;

Konverze hodnot – použití Třída implementuje rozhraní IValueConverter s metodami Convert – převod hodnoty z objektu pro editor ConvertBack – převod hodnoty z editoru pro objekt <StackLayout x:Name="sLayout"> <StackLayout.Resources> <ResourceDictionary> <local:IntToStringConverter x:Key="cIntToStr" /> </ResourceDictionary> </StackLayout.Resources> <Entry Text="{Binding Vek, Mode=TwoWay, Converter={StaticResource cIntToStr}}" /> <Label Text="{Binding Vek, Mode=OneWay, StringFormat='Věk: {0:N0} let'}" /> </StackLayout>

Vlastní ovládací prvek s propojitelnou vlastností Třída ovládacího prvku dědí z třídy BindableObject (nebo jejího potomka) Statická položka s názvem vlastnosti a příponou Property definovaná přes BindableProperty Vlastnost v get používá předkovu metodu GetValue a v set metodu SetValue Změnu hodnoty oznámí událost propertyChaged, kde lze změnu promítnout do ovládacího prvku public partial class EditorBarvy : BindableObject { public static readonly BindableProperty BarvaProperty = BindableProperty.Create("Barva", typeof(Color), typeof(EditorBarvy), Color.White, propertyChanged: BarvaChanged); private static void BarvaChanged(BindableObject bindable, object oldValue, object newValue) { if ((Color)oldValue != (Color)newValue) ((EditorBarvy)bindable).bNahledBarvy.BackgroundColor = (Color)newValue; } public Color Barva get { return (Color)GetValue(BarvaProperty); } set { if (Barva != value) SetValue(BarvaProperty, value); }

Souhrn INotifyPropertyChanged – pro datové objekty Binding / SetBinding – provázání vlastnosti ovládacího prvku a datového objektu IValueConverter – konverze editovaných hodnot BindableObject – vlastní ovládací prvek s propojitelnou vlastností