Data/Code driven UI con WPF

Slides:



Advertisements
Ähnliche Präsentationen
Was würdest du… Konjunktiv 2 in der Tat!.
Advertisements

Trennbare und untrennbare Verben
Das Futur Il futuro nella lingua tedesca si forma con il verbo “werden” , che va coniugato, più l’infinito del verbo principale posto alla fine della.
WENN, WANN, ALS oppure OB. H I L F E E E E E. Kein Problem
Università di Padova anno accademico 2009/10 Lingua Tedesca Traduzione 20/11/2009.
Universität zu Köln Romanisches Seminar WS 09/10
DIE PERFEKTE WELLE JULY.
Java ohne Kara. Java ohne Kara Ab jetzt: Java ohne Kara Ziel: Erfahrungen sammeln mit ersten Java Programmen.
Silverlight Eine Einführung. Agenda 1.Was ist Silverlight? 2.Die Silverlight Philosophie 3.Vorstellung des Szenarios 4.Einführendes Beispiel 5.Konzepte.
Carlo è un ragazzo italiano di Genova. È nato nel Vive con i genitori e la sorella in un piccolo appartamento. Il nome di sua sorella è Cinzia. Carlo.
STA PER INIZIARE UNA NUOVA PUNTATA DI «MEINE FAMILIE» VI PREGHIAMO DI SPEGNERE I CELLULLARI O DISPOSITIVI ELETTRONICI [SE POSSEDETE IPAD (FRAU DONINI)
Konstruktion. wir spielen Jetzt Lego. wir spielen Jetzt Lego. Wir fangen beim Verb an.
Windows Presentation Foundation WS 2013/14 Prof. Dr. Herrad Schmidt
Windows Presentation Foundation, Vorlesung Wintersemester 2013/14 Prof. Dr. Herrad Schmidt WS 13/14 Kapitel 11 Folie 2 Model-View-ViewModel s.a.
Solo il silenzio è grande, Tutto il resto è debolezza.
Mein Lieblingslied auf der Cd ist Theo Theo
Vater Unser Musik: Hanne Haller: Vater Unser.
Verben Konjunktiv II sein Wenn das Wörtchen „wenn“ nicht wär,
Die Elektrohängegleiter La vela e il delta elettrico
Insegnare la lingua italiani ai tedeschi aspetti di una grammatica contrastiva.
Il futuro.
Le subordinate temporali e condizionali
Il Plusquamperfekt.
Aggettivi attributivi III declinazione
Winter am Lago Maggiore l’inverno al verbano Musik: Gheorghe Zamfir - Theme From Limelight Fotos und Gestaltung: ahafner.
Meine Präsentation HALLO!.
In tedesco ci sono molti tipi di saluto, adesso andremo a scoprirli:
Il Konjunktiv II.
L’infinito. Definizione L’infinito è la forma da cui si ottengono tutti i modi e i tempi del verbo. I dizionari riportano i verbi sotto questa forma base.
I verbi modali.
La frase enunciativa e la frase imperativa
La frase interrogativa
I verbi con prefisso.
RELATIVSÄTZE Prof. Sara Costa.
Storia del diritto romano G. Tiepolo, Il giudizio di Salomone, (Palazzo Patriarcale, Venezia)
Weil wenn dass Interrogative indirette.  weil + soggetto + complementi + verbo coniugato  Ich komme nicht, weil ich den ganzen Nachmittag lerne  Ich.
VERBI O SOSTANTIVI CON PREPOSIZIONE In tedesco molti verbi e sostantivi vengono usati con una o più preposizioni.
Temporalnebensätze Wann? Frasi interrogative dirette e indirette -Wann bist du zu Hause? - Sag mir bitte, wann du zu Hause bist.
Secondarie finali La frase finale esprime lo scopo, l’intenzione, l’obiettivo che si vuole raggiungere può essere con um…… zu o damit.
Dottor Gian Maria Amatori Mehr denn je sind die Themenbereiche Regionalität, Authentizität und Qualität absolut zukunftsweisende Werte. Dr. Amatori ist.
A. Inserimento di notazioni psicologiche/emotive (es. Biancaneve ha paura; i nani sono terrorizzati dalla morte di Biancaneve che definiscono liebes;
Die Bremer Stadtmusikanten Mara Bläsing Flavia Di Battista Sabrina Canestrella Irene Tomasi.
Komparativ Comparativo di uguaglianza si forma con So + aggettivo + wie Marco ist so groß wie Luca.
Genial Klick Kapitel 10. So chiedere informazioni per orientarmi in una città Entschuldigung, wo ist die Post? Wo ist bitte der Sportplatz? Wo ist das.
Conseguenze per la politica commerciale altoatesina Assessore al Commercio Dott. Werner Frick Proseguire la strada imboccata ►Mantenere.
Kapitel 9 Testvorbereitung Elena Nembrini, Scuola Media Bellinzona 1.
Testvorbereitung Klasse 3 AB
Die Bildung des Perfekts
Zukünftige Wohnpolitik in Südtirol
Was isst du gern? Cosa mangi volentieri?
PROVA di COMPETENZE di TEDESCO - RIPASSO -
Das Entwurfsmuster Model-View-Controller
Die Darstellung der Daten
„Mit Holz heizen… aber richtig!“ „Riscaldare con la legna… ma bene!“
Un bambino domanda al padre
VERBI O SOSTANTIVI CON PREPOSIZIONE
Internationalen Tag gegen Gewalt an Frauen 25. November
Internationalen Tag gegen Gewalt an Frauen 25. November
Ein Leitbild für Innichen
Nel mezzo del cammin di nostra vita
Un bambino domanda al padre
Data/Code driven UI mit WPF Teil 1
Data/Code driven UI mit WPF Teil 2
Genial Klick A1 Elena Nembrini
Genial Klick Kapitel 10.
INDICAZIONI STRADALI Petra: Entschuldigung, wie komme ich zur Buchhandlung? Fred: Hallo, Sie gehen nach rechts, dann geradeaus. In der Ecke gibt es eine.
Un bambino domanda al padre
Genial Klick A1 Elena Nembrini
cf. Compito : WP10 Ital La famiglia: Ieri e oggi
cf. Compito : WP10 Ital La famiglia: Ieri e oggi Sd
 Präsentation transkript:

Data/Code driven UI con WPF Come posso construire interfacce utenti senza XAML? Wolfgang Riedmann wolfgang@riedmann.it Meeting Italiano 2018 a Bolzano

Meeting Italiano 2018 a Bolzano Disclaimer Cosa NON vi presento: La verità assoluta Una soluzione unica oppure la migliore Codice perfetto al 100% Cosa invece vi presento: Una ulteriore possibilità poco comune per creare GUI WPF Una soluzione come creare finestre e usercontrols in maniera totalmente dinamica Una possibilità di creare applicativi multi-lingue Grafica adeguata senza stylesheet, volendo anche su base individuale Capirete meglio come funziona WPF internamente Meeting Italiano 2018 a Bolzano

Perchè WPF e non WinForms Futuro: WPF è uno sviluppo da zero, che non è legata alle API di Windows. Se prima o poi ci sarà una GUI portabile sarà probabilmente su base WPF WPF è gestita con vettori, è scalabile da risoluzioni basse da tablet e notebook economici fino a monitor ad alta risoluzione come 4K e 8K Con WPF avete possibilità di disegno quasi illimitate, soprattutto creando nuovi controlli assemblandoli da controlli esistenti. Posizionamento dinamico – possibilmente finestre WPF dovrebbero essere composte senza indicazioni di origini definiti da punti, ma con controlli di layout WPF ha un databinding molto esteso ed è particolarmente adeguato a applicativo MVVM. Meeting Italiano 2018 a Bolzano

Meeting Italiano 2018 a Bolzano In cosa differisce WPF Le classi VO-GUI lavorano come WinForms e la intera GDI di Windows GDI con coordinate. WPF lavora come HTML con controlli content e distanze. È possibile forzare anche WPF al lavoro con coordinate, ma si perde il vantaggio maggiore: il posizionamento dinamico. Per disegnare una finestra prima ci si dovrebbe pensare come la finestra deve essere rappresentata su monitor di differenti grandezze. Solo dopo si dovrebbe partire con la realizzazione. Solo facendo così una finestra lavorerà bene in tutti gli ambienti. Meeting Italiano 2018 a Bolzano

Dove vogliamo arrivare? Una finestra molto semplice, con databinding a un ViewModel per dati e azioni (Command) Meeting Italiano 2018 a Bolzano

Meeting Italiano 2018 a Bolzano Primo tentativo: XAML XAML: was mich stört: Dinge wie „Margin“ und „Height“ werden wiederholt, die Datenbindung muss relativ aufwendig definiert werden, und hier fehlt auch Mehrsprachigkeit. Die lässt sich zwar auch über Datenbindung realisieren, genauso wie die Ränder und Abstände, aber das macht den Code nur noch unübersichtlicher. Bei einem größeren Grid wird auch die Spezifizierung von Spalten und Zeilen unübersichtlich. Meeting Italiano 2018 a Bolzano

Secondo tentativo: Code Das Fenster komplett in Code geschrieben bringt ein paar Vorteile: die Anzahl der Spalten und Zeilen ist sofort ersichtlich, Margin und Height werden nur an einer Stelle angegeben. Der Code mag vielleicht etwas übersichtlicher wirken, ist aber wesentlich umfangreicher. Dafür lässt er sich komplett in XIDE erstellen, es fehlt aber eine Vorschau. Insgesamt: Thema verfehlt Meeting Italiano 2018 a Bolzano

Terzo tentativo: controlli propri Wir haben was von VO gelernt: Code nicht duplizieren, sondern in eigene Klassen anzulagern. Exemplarisch hier die WPFTextBox. Der Clou: wir übernehmen die Idee des Name-based Binding von VO. Automatisch wird dadurch eine Variable mit dem Namen des Controls im Model mit dem Inhalt des Controls verbunden. Und das Ganze findet in der Zuweisung der Property statt. Zugleich setzen wir Margin und Height auf die applikatonsweiten Werte Meeting Italiano 2018 a Bolzano

Terzo tentativo: La finestra Endlich haben wir überschaubaren und ordentlichen Code, ohne etwas an Funktionalität einzubüssen Meeting Italiano 2018 a Bolzano

Idea: Finestra costruita dinamicamente Wir nutzen die Control-Klassen aus dem vorherigen Beispiel, um das Fenster vollkommen dynamisch aufzubauen – und damit sind wir dort angekommen, wo wir hin wollten. Datenstruktur hinterlegen und das Fenster baut sich automatisch auf, wie wir es brauchen. Meeting Italiano 2018 a Bolzano

Meeting Italiano 2018 a Bolzano E le DBF? Interessanterweise kommt in diesem Zusammenhang oft die Frage: und mit DBFs funktioniert das auch? Meine Antwort: klar, denn dem WPF Databinding ist es vollkommen egal, wo die Daten herkommen. Wenn wir das vollkommen dynamisch machen wollen, ohne im Quellcode definierte Felder im Model, dann brauchen wir hier eine spezielle Klasse, die dynamics verwendet. In manchen meiner VO-Applikationen kommen die Daten eines einzelnen Fensters aus mehreren Datenquellen, und in WPF geht das auch ohne jedes Problem, vielleicht sogar etwas leichter. Meeting Italiano 2018 a Bolzano

La DataGrid – usando XAML Das DataGrid braucht in der einfachsten Form keine Konfiguration, es stellt einfach alle Daten der DataSource dar. Sobald man aber nicht alle Spalten darstellen möchte, muss man das DataGrid im XAML konfigurieren. Das Hauptproblem ist in meinen Augen, dass die Anzahl der Spalten im XAML schon festgelegt wird und nicht erst vom Code des Programmes Meeting Italiano 2018 a Bolzano

La DataGrid – scritto in codice In Code geschrieben ist das ganze erst mal viel aufwendiger und wesentlich mehr Code als in XAML – aber vielleicht doch etwas flexibler, weil man die Spalten in einer Schleife schreiben könnte oder in Bedingungen kapseln Meeting Italiano 2018 a Bolzano

La DataGrid – con classe propria So schaut es schon eher nach kompakten Code aus…. Darunter der entsprechende Code aus der WPFDataGrid-Klasse Meeting Italiano 2018 a Bolzano

La DataGrid – e con le DBF? Für den DBF-Zugriff greifen wir wieder auf unsere ExpandoBase-Klasse zurück, die erlaubt uns nämlich ein dynamisches Model Meeting Italiano 2018 a Bolzano

Fine sessione – Grazie per la Sua attenzione! Ich hoffe, Sie können was für ihre eigene Arbeit mitnehmen – und wenn es nur der Vorsatz ist: das mache ich garantiert nicht Meeting Italiano 2018 a Bolzano