Data/Code driven UI mit WPF Teil 1

Slides:



Advertisements
Ähnliche Präsentationen
Universität Stuttgart Institut für Kernenergetik und Energiesysteme Was ist Refactoring? Bevor man die Integration angeht, mag es angebracht sein, den.
Advertisements

es gibt (fast) nichts, was nicht anders gemacht werden könnte
Strukturen. In einer Struktur kann eine beliebige Anzahl von Komponenten (Daten) mit unterschiedlichen Datentypen (im Gegensatz zu Feldern) zusammengefaßt.
Klassenvariable. Da man für jede Kuh bzw. jede Henne auf dem Markt den gleichen Preis für ein Liter Milch, bzw. den gleichen Preis für ein Ei bekommt,
Programmiermethodik SS2007 © 2007 Albert Zündorf, University of Kassel 1 5. Test-First Prinzip Gliederung: 1. Einführung 2. Objektdiagramme zur Analyse.
-LABORPRAKTIKUM- SOMMERSEMESTER 2005
Windows Presentation Foundation, Vorlesung Wintersemester 2013/14 Prof. Dr. Herrad Schmidt WS 13/14 Kapitel 3 Folie 2 Layout (1) Zur Anordnung der Steuerelemente.
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.
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 8 Folie 2 Commands (1) s.a.
CGI (Common Gateway Interface)
Goldpartner: Veranstalter: Der Werkzeugkasten für Entwickler Ein UI-Framework in AngularJS Timo Korinth.
Автор: Соловьянова Татьяна Анатольевна, учитель немецкого языка Муниципального бюджетного общеобразовательного учреждения «Средняя общеобразовательная.
Fakultät Architektur, Lehrstuhl für Bauökonomie und Computergestütztes Entwerfen Informationstechnologien (IT) in der Architektur Raster- oder Vektorgrafik.
Key-Value Paare (KVP) - Metadaten für Kanäle speichern und nach MDF4 exportieren PM (V1.0)
Tutorium Software-Engineering SS14 Florian Manghofer.
1 freedroidz – spielend Programmieren lernen. 2 Was ist freedroidz?
Hören und Sprechen II Klasse:09. Hörübung Ein chinesischer Student schickt ein Päckchen nach China  H ö ren Sie den Dialog einmal und f ü llen.
Energy as a driver in open-ended evolution Von Tim Hoverd & Susan Stepney Präsentation von Sebastian Schrage.
Seminarvortrag Möglichkeiten zur dreidimensionalen Darstellung von Straßenoberflächen Matthias Baumgarten.
Aktionswoche Neue Medien
Beispiel ELEKTRO komplette Wohnung.
Positives denken fördern
Anforderungen an die neue Datenstruktur
Konstruktoren.
Projekt: Freie Tauchausbildungsunterlagen
Das Online- Gutscheinportal
Modell der vollständigen Handlung aus Wikipedia
Töne, Akkorde und Tonleitern
Aus dem Leben eines Hotline-Mitarbeiters
Java & Greenfoot Grundlagen.
Wenn der Helfer kommt, der Geist der Wahrheit, wird er euch zum vollen Verständnis der Wahrheit führen. Denn was er sagen wird, wird er nicht aus.
Kindersoldaten Von Lino Günther
Ein Winkellayout mit float
DEUTSCH Pronominaladverbien - Übungen nächste Seite 
Forschungsthema: Der Atombau
Sequential Function Chart
Teamname „Projekttitel“
EFI Wissensaustausch-Portal
Graphen.
Data/Code driven UI con WPF
Data/Code driven UI mit WPF Teil 2
Nicht alle erkennen den Würfel, aber die meisten – obwohl im obersten rechten Kreis ein Strich fehlt. > eine Re-Konstruktionsleistung des Gehirns, das.
Debugging.
Titel: Quelle: Übungsart: Titel: Quelle: Uhr Die Uhr lesen lernen
Wie geht es weiter im Projekt. Wochenrückblick vom bis
Arten von Kontrollstrukturen
Programmiermethodik Übung 7
Ein Sohn fragt den Vater
Thema der Präsentation
Mögliche Stoffverteilung im Grundkurs
DSD – Schriftliche Kommunikation
Der 30-Sekunden Elevator Pitch
1. Auflösung optischer Instrumente
9. Vererbung und Polymorphie
Faire und vertrauensvolle Zusammenarbeit an der
WIR SCHÜLER GESTALTEN UNSERE SCHULE MIT!
Statische und Nichtstatische Methoden Properties / Eigenschaften
Wissenschaftliches Projekt
Von Wietlisbach, Lenzin und Winter
Datentyp- umwandlung.
Pyramidenschnitt Eine regelmäßige, dreiseitige Pyramide wird von einem quadratischen Prisma durchdrungen. Die Aufgabe soll im ersten Teil im Auf- und im.
Abiturprüfung Mathematik 2015 Baden-Württemberg Allgemeinbildende Gymnasien Wahlteil Analytische Geometrie / Stochastik Aufgabe B 2.1 und B Lösungen.
SOFTWARE- UND WEB-LÖSUNGEN
Ein Sohn fragt den Vater
Hack2Sol – Powered by SAP
RGB-LED Projekt INGOLSTADT.
 Präsentation transkript:

Data/Code driven UI mit WPF Teil 1 Wie kann ich WPF-Oberflächen ohne XAML bauen? Wolfgang Riedmann wolfgang@riedmann.it Xbase.Future 2018 in Köln

Disclaimer Was Sie hier NICHT bekommen: Die absolute Wahrheit Die beste oder gar die einzige Lösung 100% perfekten Code Was Sie hier sehen werden: Eine weitere Möglichkeit abseits des Mainstreams, um WPF-Oberflächen zu gestalten Eine Lösung, um dynamisch Fenster und UserControls zu erzeugen Eine mögliche Implementierung von mehrsprachigen Applikationen Grafische Gestaltung ohne Stylesheets, ggf. sogar auf individueller Basis Hoffentlich ein besseres Verständnis dafür, wie WPF intern „tickt“ Xbase.Future 2018 in Köln

Warum WPF und nicht WinForms Zukunftssicher: WPF ist eine komplette Neu-Entwicklung einer GUI, die nicht ans Windows GUI gebunden ist. Wenn es je eine plattform-unabhängige Oberfläche für .NET geben wird, dann fast sicher auf WPF-Basis WPF ist vektor-orientiert, skaliert daher von niederen Auflösungen wie billigen Tablets bis hinauf zu hochauflösenden 4K-Bildschirmen WPF gibt durch sein Design nahezu unbegrenzte Gestaltungsmöglichkeiten, besonders durch das Zusammenbauen von UserControls aus bekannten Elementen. Hoch dynamische Gestaltung – WPF-Fenster können (und sollten meist) ohne Angabe von Größen- oder Positions-Koordinaten erzeugt werden, sondern mit Hilfe von Layout-Controls WPF eignet sich durch sein sehr leistungsfähiges Databinding besonders für MVVM-Applikationen. Xbase.Future 2018 in Köln

Was ist anders in WPF Die VO-GUI-Klassen arbeiten wie WinForms und das gesamte Windows GDI mit Koordinaten. WPF arbeitet wie HTML mit Content-Controls und Abständen. Man kann WPF auch zur Arbeit mit Koordinaten zwingen (CanvasControl), gibt aber dann viele Vorteile der WPF auf, nämlich die dynamische Positionierung Um erfolgreich ein WPF-Fenster entwerfen zu können, sollte man sich zuallererst überlegen, wie sich das Fenster auf Bildschirmen verschiedener Größen verhalten soll. Erst dann sollte man mit dem Entwurf beginnen. Nur dann wird ein WPF-Fenster sich auf allen Bildschirm-Größen ordentlich bedienen lassen. Xbase.Future 2018 in Köln

Wo wollen wir hin? Ein ganz einfaches Fenster, mit Datenbindung an ein ViewModel für Daten und Aktionen (Commands) Xbase.Future 2018 in Köln

Der erste Ansatz: XAML Xbase.Future 2018 in Köln 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. Xbase.Future 2018 in Köln

Der zweite Ansatz: 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 Xbase.Future 2018 in Köln

Dritter Ansatz: Eigene Control-Klassen 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 Xbase.Future 2018 in Köln

Dritter Ansatz: Das Fenster Endlich haben wir überschaubaren und ordentlichen Code, ohne etwas an Funktionalität einzubüssen Xbase.Future 2018 in Köln

Idee: Fenster dynamisch bauen 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. Xbase.Future 2018 in Köln

Und DBF? Xbase.Future 2018 in Köln 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. Xbase.Future 2018 in Köln

Das DataGrid – zuerst in 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 Xbase.Future 2018 in Köln

Das DataGrid – komplett in Code 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 Xbase.Future 2018 in Köln

Das DataGrid – mit eigener Klasse So schaut es schon eher nach kompakten Code aus…. Darunter der entsprechende Code aus der WPFDataGrid-Klasse Xbase.Future 2018 in Köln

Das DataGrid – und mit DBF? Für den DBF-Zugriff greifen wir wieder auf unsere ExpandoBase-Klasse zurück, die erlaubt uns nämlich ein dynamisches Model Xbase.Future 2018 in Köln

Das wars – Danke für Ihre Aufmerksamkeit! Ich hoffe, Sie können was für ihre eigene Arbeit mitnehmen – und wenn es nur der Vorsatz ist: das mache ich garantiert nicht Xbase.Future 2018 in Köln