Desktop GUI. IW5 - Programování v.net a C# Desktop GUI

Podobné dokumenty
CineStar Černý Most Praha

Obsah přednášky. Představení webu ASP.NET frameworky Relační databáze Objektově-relační mapování Entity framework

WCF. IW5 - Programování v.net a C# WCF

vjj 1. events, triggers.net

MVVM pro desktop i web

Efektivní vývoj mobilních aplikací na více platforem současně. Mgr. David Gešvindr MCT MSP MCPD MCITP

1 - Úvod do platformy.net. IW5 - Programování v.net a C#

Architektura. Vedení sesterské dokumentace

Základy datových vazeb Silverlightu. Funkce Silverlightu 2. Podpora jazyků a technologie.net Framework

IW5 - Programování v.net a C# 4 Pokročilé konstrukce C#

UJO Framework. revoluční architektura beans. verze

Obsah. Úvod 11 Zpětná vazba od čtenářů 13 Errata 14 Poznámka ke kódům 14

Část IV - Bezpečnost 21. Kapitola 19 Bezpečnostní model ASP.NET 23

Stručný obsah. Část I. Část II. Část III. Úvod do vývoje v prostředí Visual Studio 25. Návrh uživatelského rozhraní 127

Platforma.NET 11.NET Framework 11 Visual Basic.NET Základní principy a syntaxe 13

Nástroje na vývoj aplikací pro ios Trocha motivace na úvod Co budete potřebovat Co když nemáte k dispozici počítač s macos? Vývojové prostředí Xcode

Windows Presentation Foundation & Data Binding

Analýza a Návrh. Analýza

MATURITNÍ OTÁZKY ELEKTROTECHNIKA - POČÍTAČOVÉ SYSTÉMY 2003/2004 PROGRAMOVÉ VYBAVENÍ POČÍTAČŮ

modelu MVC pro tvorbu aplikací

Formy komunikace s knihovnami

OMO Patterny pro UI. Základy UI - HTML, DOM, JavaScript, CSS. Single Page Application

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY

Hiearchical MVC (Model-view-controller) vs. PAC (Presentation-abstraction-control)

Generické programování

Studentská tvůrčí a odborná činnost STOČ Petr Čápek

Návrhové vzory. Jakub Klemsa, Jan Legerský. 30. října Objektově orientované programování.

Vývoj mobilních aplikací pomocí frameworku Xamarin

Specifikace softwarového díla & Časový plán implementace. pro. MEF Editor

WPF Desktopové aplikace

Při studiu tohoto bloku se předpokládá, že student je zvládá základy programování v jazyce Java s využitím vývojového prostředí NetBeans.

Komponenta Human Task v Oracle SOA Suite

Jakub Čermák Microsoft Student Partner

Architektury informačních systémů

Maturitní otázky z předmětu PROGRAMOVÁNÍ

Specifikace projektu Ocerus

Projekt do předmětu PAS. Textový editor

Vzdělávací oblast: Informatika a informační a komunikační technologie Vzdělávací obor: Programování. Předmět: Programování

NPRG031 Programování II 1 / :25:46

Vývoj mobilních aplikací pomocí frameworku Xamarin

Snadný vývoj webových aplikací s Nette. Lukáš Jelínek

(Enterprise) JavaBeans. Lekce 7

PV239/WP. Vývoj univerzálních Windows Store aplikací. Mgr. David Gešvindr MCSD: Windows Store MCSE: Data Platform MCT MSP

Architektury informačních systémů

Olga Rudikova 2. ročník APIN

Architektura rodiny operačních systémů Windows NT Mgr. Josef Horálek

Komponenty v.net. Obsah přednášky

Tvorba informačních systémů

Obsah. Úvodem 9 Zpětná vazba od čtenářů 10 Zdrojové kódy ke knize 10 Errata 10

Zpětná vazba od čtenářů 11 Dotazy 11 Zdrojové kódy ke knize 11 Errata 11 Typografické konvence použité v knize 12

Informační systém pro podporu řízení, správu a zjišťování aktuálního stavu rozvrhované výuky

JEDNODUCHÁ SIMULAČNÍ HRA KROK ZA KROKEM ANEB OD PŘEDSTAVY K HOTOVÉMU

NMIN201 Objektově orientované programování 1 / :36:09

IS pro podporu BOZP na FIT ČVUT

47 Mapování přístupnosti

Úvodem... 9 Kapitola 1 Karetních

Bc. Martin Majer, AiP Beroun s.r.o.

Vývoj SW pro mobilní zařízení s ios. Petr Hruška, Skymia s.r.o. Teorie a praxe IP telefonie,

Střední průmyslová škola elektrotechnická Praha 10, V Úžlabině 320

Bakalářské práce realizované v.net/c# Bachelor thesis implemented in.net/c#

PHP framework Nette. Kapitola Úvod. 1.2 Architektura Nette

Business Intelligence

Komponenty pro ArcGIS API for JavaScript

Rozhraní pro práci s XML dokumenty. Roman Malo

Návrh aplikace. Project Westpon. Inteligentní simulátor budov. Martin Mudra, Jan Smejkal, Onřej Macoszek, Marek Žehra, Jiří Slivárich

Obsah. Proč právě Flash? 17 Systémové požadavky 17. Jak používat tuto knihu 18 Doprovodný CD-ROM 19

Tvorba informačních systémů

PŘETĚŽOVÁNÍ OPERÁTORŮ

MBI - technologická realizace modelu

Vývoj multiplatformní aplikace v Qt

Obsah. Úvod 11. Vytvoření emulátoru 20 Vytvoření emulátoru platformy Android 4.4 Wearable 22 Spouštění aplikací na reálném zařízení 23

SIMATIC Safety V11. Jan Kváč. Siemensova Praha 13 jan.kvac@siemens.com

Nové jazykové brány do Caché. Daniel Kutáč

Objektové programování

Část 1 Moderní JavaScript

IoC/DI. Tomáš Herceg Microsoft MVP (ASP.NET)

Programování v C++ 2, 4. cvičení

Střední průmyslová škola elektrotechnická Praha 10, V Úžlabině 320 M A T U R I T N Í T É M A T A P Ř E D M Ě T U

Předmluva k druhému vydání 13. Úvod 17. ČÁST 2 Vytváření dokumentů XML 65

Google Web Toolkit. Martin Šurkovský, SUR března Katedra informatiky

GTL GENERATOR NÁSTROJ PRO GENEROVÁNÍ OBJEKTŮ OBJEKTY PRO INFORMATICA POWERCENTER. váš partner na cestě od dat k informacím

SADA OVLÁDACÍCH PRVKŮ PRO WPF

Služby Microsoft Office 365

Vývoj informačních systémů. Přehled témat a úkolů

PB161 Programování v jazyce C++ Přednáška 9

Semináˇr Java X J2EE Semináˇr Java X p.1/23

Vývoj univerzálních aplikací pro Windows 10. Mgr. David Gešvindr MCSD: Windows Store MCSE: Data Platform MCT MSP

JAVA JavaBeans Java, letní semestr

Technologie Windows Presentation Foundation. The Technology of Windows Presentation Foundation

Profilová část maturitní zkoušky 2017/2018

TÉMATICKÝ OKRUH Softwarové inženýrství

Novinky ve Visual Studio Tomáš Kroupa

Obsah. Předmluva 13 Zpětná vazba od čtenářů 14 Zdrojové kódy ke knize 15 Errata 15

Podpora XML v.net. Podpora XML v.net. nezávislý publicista. Jirka Kosek.

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ. Fakulta elektrotechniky a komunikačních technologií BAKALÁŘSKÁ PRÁCE

Obsah. Kapitola 1. Předmluva 11 O této knize 13 Konvence...13

TÉMATICKÝ OKRUH Softwarové inženýrství

ISZR Referenční agent.net

Matematika v programovacích

Tento studijní blok má za cíl pokračovat v základních prvcích jazyka Java. Konkrétně bude věnována pozornost rozhraním a výjimkám.

Transkript:

IW5 - Programování v.net a C# Strana 1

Obsah přednášky Definice GUI Představení existujících technlogií Jemný úvod do WPF Praktické ukázky WPF MVVM pattern Strana 2

Prezentační vrstva aplikace Vrstva zodpovědná za vše co uživatel vidí Interakce s uživatelem Režim zobrazení Pouze zobrazení Možnost editace Strana 3

Jednoduché editory (ovládací prvky) Editace Textu Logických hodnot Výběrem z množiny Čísel Datumů Časů Strana 4

Pokročilé ovládací prvky Strana 5

Speciální ovládací prvky Strana 6

Ukázka Winforms Strana 7

Winforms Jednoduché i komplexní formuláře Starší technologie Relativně spolehlivá technologie Prověřená a otestovaná technologie Mnoho existujících komponent třetích stran Nadstavba WinAPI Mrtvá technologie Ukončený vývoj Pouze údržba Strana 8

WPF názorně Strana 9

WPF Windows Presentation Foundation Integrální součást frameworku.net Novější Flexibilní Inspirované HTML & CSS Úplné oddělení práce grafika a vývojáře Animace a speciální efekty Podpora stylování a templatování Možnost jednoduše vytvořit Look and feel Hardwarová akcelerace pro GUI Podpora ve Win7 a novějších Strana 10

Modern UI (Metro) názorně Strana 11

Modern UI (Metro) Novější než WPF avšak odvozené od WPF Úplná dotyková podpora Použitelné na Desktopových aplikacích Tabletech Mobilních zařízeních Strana 12

Architektura WPF Strana 13

Hlavní koncepty WPF XAML Dependency property Stylování Templatování Data binding a konverze Command pattern Routed events Vizuální a logický strom Strana 14

XAML Inspirováno HTML Komplexnější XML Property mohou být deklarovány jako elementy Jednoduchý ke čtení Oddělení vývojového kódu a designové části Implicitní konverze Podpora deklarované části kódu Přenositelný mezi různými aplikacemi Desktopové aplikace Mobilní aplikace Webové aplikace Strana 15

Dependency property Pouze v potomcích třídy DependencyObject Dědičnost hodnot v logickém stromu Notifikace změn Callback funkce pro validaci Jmenné konvence (Property přípona) Strana 16

Styly Inspirováno CSS Svázané s typem ovládacího prvku Umožňují nastavit hodnotu property Podpora dědičnosti Podpora přepisování stylu Deklarace v XAML souboru Triggery a multitriggery Klasický trigger Event trigger Datový trigger Strana 17

Logický a vizuální strom Strana 18

Šablony Strana 19

Control template Pouze vizuální část Veškerá logická část zakázána Spojení s logickou části pouze pomocí bindingu Každý ovládací prvek má výchozí šablonu Nastavení šablony pomocí DependencyProperty Změna ControlTemplate kompletně mění vizuální strom ovládacího prvku Strana 20

Data template Podobný koncept jako control template Obvykle mnohem jednodušší Nejčastěji použito pro zobrazení dat v komponentě ViewControl DataTemplateSelector obyvkle bývá poděděn a obsahuje požadovanou implementaci pro určení datové šablony Strana 21

Data binding Strana 22

Režim bindingu Strana 23

Podmínky pro funkční binding Klasické objekty Implementovaný interface INotifyPropertyChanged Public getter a setter Kolekce Implementovaný interface INotifyCollectionChanged Public getter Strana 24

Databinding propagace změn Určeno pomocí property Binding.UpdateSourceTrigger Default LostFocus v textových elementech jinam PropertyChanged Explicit Nutné zavolat explicitně z kódu LostFocus Změny jsou propagovány po ztrátě fokusu PropertyChanged Propagace změn při každé změně Strana 25

Binding - zdroje Binding.Source property Binding.ElementName property DataContext ovládacího prvku Dědičnost v rámci vizuálního stromu Binding.RelativeSource property Obvykle používané v kombinaci s AncestorType Možnost omezit hloubku prohledávání vizuálního stromu Strana 26

Data binding {Binding} {Binding Path=SelectedItem.Name} {Binding SelectedItem} {Binding Path=Background, ElementName=Grid} {Binding Path=Errors[0].Content} {Binding Path=Background, RelativeSource={RelativeSource Self}} {Binding Path=Background, RelativeSource={RelativeSource AncestorType={Grid}}} Strana 27

Converter IValueConverter interface IMultiValueConverter interface Logika zodpovědná za konverzi mezi zdrojem a cílem bindingu Implementace v uživatelském kódu Deklarace v XAMLu Několik předdefinovaných typů Defaultně dochází při konverzi k volání Object.ToString() Strana 28

Command pattern ICommand interface Command parameter Command source Objekt vykonávající command Command target Obvykle použitý binding dohromady s ElementName Deklarace v XAML souboru nebo code behind souboru Předdefinované commandy Statická třída ApplicationCommands Notifikace změn, invalidace Strana 29

Command a Input Binding Objekt mapující libovolný command k jeho obsluze void Execute(object parameter) metoda bool CanExecute(object parameter) metoda Možnost nastavit na většině komponent Mapování vstupních gest k libovolnému commandu Podpora pro gesta myší Podpora pro gesta klávesnice Možnost nastavit na většině komponent Strana 30

Delegate command pattern Jednoduchá generická implementace ICommand interface bool CanExecute(object parameter) akce předána jako parametr void Execute(object parameter) akce rovněž předána jako parametr Možnost vytvořit genericky Často se používá kompozitní implementace V knihovnách třetích stran i asynchronní podpora Strana 31

Routed events Přímé Obdoba použití událostí ve WinForms Tunneling Preview prefix Navigace od kořene vizuálního stromu až k elementu, který událost vyvolává Bubbling Opačná navigace než v případě tunelované události Event handling RoutedEventArgs.Handled property Strana 32

MVVM pattern Strana 33

Část I - View Definice toho co uživatel vidí Obvykle dědí od třídy Control nebo UserControl Referencuje view model přes DataContext property Všechny ovládací prvky ve view jsou datově i commandově nabindované na property view modelu Obsluhuje vizuální efekty a animace Strana 34

Část II - ViewModel Poskytuje data pro view prostřednictvím bindingu Poskytuje uživatelskou interakci opět prostřednictvím bindingu Rozhoduje o vykonatelnosti commandu Obvykle obsahuje i vizuální informace o editovaných datech Selekce Strana 35

Část III - Model Obsahuje business logiku a například validaci Obvykle implementuje INotifyPropertyChanged Obvykle implementuje INotifyCollectionChanged Strana 36

Ladění WPF Snoop Ukončený vývoj Podpora silverlight WPF Inpector Ukončený vývoj Stabilnější než Snoop Předchůdce XAML Spy XAML Spy Nová verze Probíhající vývoj Podpora pro Windows 8 Strana 37

Ing. Siemens CT DC / Sitraff Team Olomoucká 7/9 618 00 Brno Česká republika E-mail: jaroslav.necas@siemens.com Strana 38

Reference http://wpftutorial.net http://wpftutorial.net/databindingoverview.html http://wpftutorial.net/logicalandvisualtree.html https://msdn.microsoft.com/en-us/library/ms754130%28v=vs.110%29.aspx https://msdn.microsoft.com/en-us/library/gg405484%28v=pandp.40%29.aspx https://msdn.microsoft.com/en-us/library/ms750441%28v=vs.110%29.aspx Strana 39