Expression Blend 3 - Daten für Designer bereitstellen

by Gregor Biswanger 29. April 2009 14:29

Am 19.März 2009 veröffentlichte Microsoft neben der Betaversion von Silverlight 3, auch Expression Blend 3 in der Preview-Version (CTP) auf der MIX09. Bei Expression Blend 3 hat sich einiges getan, was auf den ersten Blick nicht so ersichtlich ist. Ganz besonders erfreut bin ich über die neue Data sources Integration.

In der Vergangenheit hatte Microsoft nur zwei unterschiedliche Entwicklungswege Unterstützt, das wären die Datengetriebene- und Frontendgetriebene-Entwicklung (Data-DD, FDD). Wie derzeit die BETA-Version von Microsoft Visual Studio 2010 zeigt, wird für die Zukunft, nun auch verstärkt die Testgetriebene-Entwicklung (TDD) unterstützt, womit die Entwicklung von Businesslogikgetriebenes-Design (DDD) erst fachgemäß umgesetzt werden kann. Nicht nur daran ist dies ersichtlich, sondern auch an der Vision: Trennung von Design und Logik. Der Designer soll sich unabhängig vom Entwickler um das Frontend kümmern und der Entwickler soll sich nur um seine Programmierung beschäftigen.

Leider konnte derzeit diese Vision nicht „wirklich“ unabhängig nachgekommen werden. Zugegeben, mit der XAML-Technologie ist es auf Technischer ebene bereits möglich, dennoch mussten für das Design immer wieder Daten für die Designer bereitgestellt werden, außer der Designer wusste sich selbst mit Visual Studio Abhilfe zu schaffen, oder durch Stubs Bereitstellungen der Entwickler.

Doch bei Expression Blend 3 kann diese gegenseitige Abhängichkeiten nun endlich durch Data sources gelöst werden. Mittels Data sources kann der Designer sich unterschiedliche Daten selbst zur Verfügung stellen. Auch für Frontendgetriebene-Entwicklung ist dies ein erfreuliches Feature.

Data sources erstellen

In diesem Beispiel wird ein Silverlight 3-Projekt mit den Namen SilverlightDataSourcesExample erstellt. Anschließend wird die ListBox aus dem Asset Library ausgewählt, und auf die Silverlight-Oberfläche gezogen.



Abb.1.1. – Neues Silverlight 3 Projekt.



Abb.1.2. – ListBox einfügen.

Damit die ListBox die Informationen erhält, wie der Inhalt später richtig angezeigt werden soll, muss ein Data-Template erzeugt werden. Um das Umzusetzen macht man ein Rechtsklick auf der erzeugten ListBox und geht im Menü unter „Edit Other Templates“, „Edit Generated Items (ItemTemplate)“ und „Create Empty“ (siehe Abb.1.3).



Abb.1.3. – Data-Template für die ListBox definieren.

Daraufhin kommt das Fenster „Create DataTemplate Resource“ wo der Name auf „DataTemplateExample“ unbenannt wird. Bei „Define in“ wird für dieses Dokument die ListBox ausgewählt.



Abb.1.4. – Data-Template für die ListBox erstellen

Daraufhin öffnet sich eine leere graue Oberfläche, wo ein Grid ohne Arbeitsfläche angezeigt wird. Um etwas Platz zu gewinnen, muss nur auf das Grid geklickt werden und links unten bei „Objects and Timeline“ das Objekt [Grid] gewählt sein, damit rechts unter „Properties“ die Eigenschaften für das Objekt angezeigt werden. Dort werden die Breite 200 und die Höhe von 30 definiert.



Abb.1.5. – Data-Template unter Expression Blend einrichten

Damit im Grid später zwei unterschiedliche Texte angezeigt werden, soll das Grid nun aufgeteilt werden mit einem Klick in der Mitten vom oberen Rand (siehe kleinen Pfeil mit der Linie, Abb.1.6). Anschließend sollen Links und Rechts TextBlöcke eingefügt werden, die im Toolbox Menü links zu finden sind. Der erste TextBlock bekommt den Namen „TextBlockFirma“ und der zweite „TextBlockName“. Der Name wird rechts oben unter Properties definiert.



Abb.1.6. – Zwei TextBlöcke anlegen

Data sources verwenden

Um jetzt für jeden einzelnen TextBlock einen Text zur Verfügung zu stellen, geht dies unabhängig vom Entwickler oder benötigten Programmierkenissen. Dafür geht man rechts oben im Menü auf „Data“. Hier können nun die Daten für die gesamte Anwendung (Application) oder für das aktuelle Fenster (This Document) Definieren werden. Für dieses Beispiel werden nur Daten für das jeweilige Fenster benötigt. Zum Hinzufügen von Daten bekommt man rechts oben weitere Auswahlmöglichkeiten. Dabei können beim ersten Icon „Add sample data source“ ein neues Daten-Objekt (Define New Sample Data) erzeugt werden, oder beim zweiten Punkt kann ein Daten-Objekt von einer XML (Import Sample Data from XML) Generiert werden. Sollte man bestehende Daten-Objekte benötigen, wählt man diese mit dem anderen Icon „Add live data source“ aus. Für das Beispiel wird hier „Define New Sample Data“ ausgewählt.



Abb.1.7. – „Define new Sample Data“

Im folgenden Fenster kann für das Daten-Objekt ein Name und der Verfügbarkeitsbereich eingestellt werden. Außerdem wird abgefragt ob die Daten auch während der Ausführung der Anwendung bereitgestellt werden sollen. Es wird alles belassen und auf OK geklickt.



Abb.1.8. – Erstelle Daten-Objekt

Danach wird rechts unter dem „This document“ die erste SampleDateSource mit einer ersten Collection angezeigt (Abb.1.9). Mit einem Klick auf den Namen Collection kann auch ein neuer Name definiert werden. Hier wird der Name Kunden vergeben. Dann hat die neue Kunden-Collection eine Standard Property1. Mit einem Klick auf das kleine Icon „ABC“ daneben, können zu diesem Property Einstellungen bearbeitet werden. Als erste Auswahl stehen die Typen (String, Number, Boolean und Image). Der Wert String soll bleiben. Dann kommt die Auswahl vieler Formate. Hier wird „Company Name“ verwendet, das für den TextBlockFirma dient (Abb.1.10). Der Name wird dann von Property1 in FirmenName geändert. Bei der Kunden-Collection wird mittels Plus-Icon ein weiteres Property „Add Simple Property“ angelegt. Der Name auf KundenName geändert. Unter den Einstellungen wird das Format auf Namen ausgewählt, das dann für TextBlockName bedacht ist (Abb.1.11).



Abb.1.9. – Erste Daten-Collection



Abb.1.10. – Für TextBlockFirma das erste Property Definieren.



Abb.1.11. – Das zweite Property für TextBlockName

Um die Test-Daten einsehen und auch bearbeiten zu können, kann bei der Kunden-Collection auf dem Datenbankicon „Edit sample values“ ein weiteres Fenster aufrufen (Abb.1.12). Beim „Edit Sample Values“-Fenster wird zum Test der Firmenname oder Kundenname beliebig geändert und die Anzahl der Daten weiter unten auf 50 erhöht, dann mit OK beendet. (Abb.1.13.).



Abb.1.12. – Edit sample values öffnen



Abb.1.13. – Die Generierten Daten

Als letzter Schritt wird den TextBlöcken die einzelnen Property-Daten aus der Kunden-Collection mittels Data-Binding gebunden. Dazu wird noch einmal beim Data-Template auf den ersten TextBlockFirma geklickt, damit werden die Properties passend angezeigt. Dort wird beim Element „Text“ das Data-Binding Menü auf dem keinen Punkt daneben aufgerufen (siehe Abb.1.14).



Abb.1.14. – Data-Binding für „Text“ Definieren

Beim folgenden Fenster „Create Data Binding“ wird sofort SampleDataSource angezeigt. Bei einer Auswahl wird rechts auch schon die Kunden-Collection angeboten. Dort wird dann FirmenName für den TextBlock benötigt.



Abb.1.15. – Die Kunden-Collection zur Auswahl

Derselbe Schritt wird bei dem anderen TextBlock auch ausgeführt. Dann werden beim Data-Template die ersten Daten sofort ersichtlich. Um nun die Liste mit Daten sehen zu können, wird zur zurück zur Liste gewechselt. Dazu muss oben in der Mitte auf [ListBox] geklickt werden (siehe Abb.1.16).



Abb.1.16. – Zur Liste zurück wechseln

Obwohl die Daten bereits im Data-Template angezeigt wurden, ist leider noch nichts davon in der Liste ersichtlich. Das liegt daran, dass dieser Liste selbst explizit kein Data-Binding definiert wurde. Dafür muss mittels Rechtsklick auf die ListBox auf „Bind ItemSource to Data“ die Kunden-Collection definiert werden.



Abb.1.17. – Bind ItemSource to Data



Abb.1.18. – Kunden-Collection auswählen

Nun wird in der Liste trotz Data-Template Definition nur der Objektname der Collection angezeigt. Das Data-Template muss wiederholt für die Liste Definiert werden. Dazu wird noch einmal mittels Rechtsklick auf die ListBox unten auf „Edit Other Templates“, „Edit Generated Items“ und unter „Apply Resource“ das DataTemplateExample ausgewählt.



Abb.1.19. – DataTemplateExample für die Liste zuweisen

Jetzt zeigt die Liste die zur Verfügung gestellten Texte an. Er hat automatisch erkannt, dass es einen manuellen Eintrag gab und hat diesen Bevorzugt wiederholt. Ob das mit Absicht so bedacht war oder ob dies ein Preview-Fehler ist, war leider nirgends ersichtlich.



Abb.1.20. – Die fertige Liste mit Daten befühlt

Wenn das Programm mit der Taste [F5] gestartet wird, werden die Daten nicht angezeigt. Dies kann aber auch unter „Data“ bei den „Data source options“ (Datenbank-icon) eingeschalten werden.



Abb.1.21. – Daten in der Liste während der Laufzeit anzeigen lassen

Data sources Technologie-Background

Beim erzeugen einer Data source wird dem Projekt ein neues Verzeichnis mit SampleData angelegt. In diesem Verzeichnis befinden sich mehrere Dateien. Beginnend bei der SampleDataSource.xsd, die einen Index aller Daten sources und Collections bereitstellt. Die Data Sources bestehen hier aus zwei Dateien, einer XAML und Code-Behind-Datei. Die XAML-Datei beinhaltet alle Daten, die durch ein erweitertes Control SampleData definiert werden. Dieses Control wird vom Namespace Expression.Blend.SampleData.SampleDataSource bereitgestellt. Allerdings ist die XAML Datei nicht in einem Designer bearbeitbar. Die Code-Behind-Datei steht als Generiertes ViewModel zur Verfügung. Es wird sich hier um die Verarbeitung und Bindung der Daten gekümmert. Wobei die Datei nicht bearbeitbar ist, da diese für dementsprechende Funktionen von Blend Generiert wird.

Fazit

Mit den Data Source-Feature kommt bei Expression Blend 3 ein lang erwarteter Wunsch von mir persönlich mit. Zusätzlich mit dem neuen Sketch-Flow, können Anwendungen erst einmal als Skizze verbildlicht Visualisiert werden, gemeinsam mit Data Source stehen nun auch Daten zur Verfügung. Meiner Meinung nach geht Microsoft mit Expression Blend genau den richtigen Weg und ich persönlich möchte viele Features nicht mehr missen.



Wenn ihnen der Artikel gefallen hat oder er für sie hilfreich war, bitten "kicken" sie ihn.
kick it on dotnet-kicks.de

Kommentare

Powered by BlogEngine.NET 1.4.5.0
Theme by Extensive SEO

Über den Autor

Gregor Biswanger

Microsoft MVP für Client App Dev
XING

Gregor Biswanger (Microsoft MVP für Client App Dev) ist freier Consultant, Trainer, Autor und Speaker.


Seine Schwerpunkte liegen im Bereich der .NET-Architektur, agilen Prozessen und XAML. Er veröffentlichte vor kurzem seine DVD´s mit Video-Trainings zum Thema „Meine erste Windows 8 App“, „Windows Store Apps mit XAML und C#“ und „WPF 4.5 und Silverlight 5“ bei Addison-Wesley von video2brain.


Biswanger ist auch im Auftrag von Intel GmbH als Technologieberater für die Intel Developer Zone aktiv und ist Leader bei der Ingolstädter .NET Developers Group (INdotNET). 

 

Video über mich:
http://www.youtube.com/watch?v=mx_6SiiLxjk


Basta! 2011 Speaker

CLIPer

MCTS
Windows SharePoint Services 3.0 – Application Development (MCTS)