Sinnvolle Kopplung von MXML und AS-Klasse


Akeshihiro

Erfahrenes Mitglied
#1
Moin moin ^^

Die, die mich kennen, finden mich normalerweise in der Java-Ecke, aber in meiner Ausbildung soll ich mich jetzt mit Flex rumschlagen. Ich kann mich dabei nicht auf die Erfahrungen der Mitarbeiter beziehen, denn es gibt keine. Ich bin der erste, der jetzt mit Flex zu tun hat, bin daher auf totalem Neuland gelandet und das in jeglicher Form. Ich wäre daher sehr erfreut, wenn ich in diesem Bereich hin und wieder Hilfe finden kann.

Mein problem: Ich habe vor der Ausbildung ferienjobmäßig für eine Firma an einem Projekt gearbeitet, das auf Silverlight aufbaut. Silverlight verwendet für die Controls WPF und da sind die XAML-Dateien mit den dazugehörigen Code-Dateien, die die eigentliche Implemtierung beinhalten, sehr gut gekoppelt worden. Da muss ich vor Microsoft echt den Hut ziehen, denn sowas hab ich noch bei keinem anderen System gefunden. In den XAML-Dateien kann man sehr bequem und schnell mit XAML-Code (sowas wie MXML) designen, tun und machen, aber es gibt keinerlei Code-Implementierung. Dafür gibt es entsprechende Source-Files. Das heißt auf diese Weise wird sehr schön der Design-Teil vom Code-Teil getrennt.

Bei MXML würde ich das auch gerne so nutzen, was aber scheinbar nicht so vernünftig will. In MXML kann man ja auch Source-Code einschleusen bzw. muss man sogar, da ich keine andere Möglichkeit gefunden habe da Code einzubringen. Das finde ich persönlich alles andere als toll, denn zum einen wird die Datei krass aufgebläht und zum anderen geht die Übersicht total flöten, mal davon abgesehen, dass auf diese Weise zwei an sich verschiedene Dinge vermischt werden. Das Problem in meinen Augen ist, dass man entweder die MXML oder eine reine AS-Klasse verwendet. Die Situation zu MXML hab ich bereits geschildert. Bei der reinen Klasse hätte man gar keine Designerunterstützung, also müsste man das von Hand machen und das will mein Chef nicht sehen, vor allem weil man dann eh nix sieht und er will was sehen, wenn er was tut. Da kam mir halt die Vorgehensweise von WPF in den Sinn.

Ich habe mal versucht etwas Ähnliches wie bei WPF umzusetzen, aber auch wirklich nur ähnlich, da das Verfahren scheinbar in Flex so nicht übernommen werden kann. Und zwar habe ich das so gemacht:
Ich habe eine MXML-Datei angelegt (TestControlBase.mxml) und die mir brav zusammengebastelt, auch die Events, die da ausgelöst werden sollen, also von wegen auf nen Button wird geklickt oder sowas. Die Methoden landen zwar im MXML-Code (kann ich ja nicht verhindern), sind aber leer und dienen lediglich als leere Container. Dann habe ich davon eine AS-Klasse abgeleitet (TestControl.as) und überlagere dort alle Event-Handler-Methoden und die eigentliche Logik ist somit auch nicht in der MXML-Datei, sondern in der AS-Datei. Auf diese Weise kann ich auch auf alle enthaltenen Controls über die ID zugreifen und nutzen. Das Problem im Designer ist aber wieder, dass er die abgeleitete Klasse nicht darstellen kann, sondern nur wenn man das in der MXML-Datei definierte Control verwenden würde. Für mich ist das halb so wild, da ich das weiß und dann in der MXML-Datei entsprechende Änderungen vornehmen würde (wobei ich da eh meist im Editor statt im Designer rumhänge, fühl ich mich einfach wohler), damit stehe ich aber wohl alleine da, denn verwendet wird dabei ja die AS-Klasse und die wird ja im Designer nicht dargestellt, erst wenn man die Anwendung ausführt, sieht man die letzt endliche Darstellung.

So, lange Rede, gar kein Sinn: Gibt es bessere Alternativen, MXML und AS zu trennen, aber dass beide dennoch als Einheit fungieren können? Wenn der Designer da noch mitspielt, wäre das natürlich noch ein leckeres Bonbon.

Vielen Dank im Voraus für alle Ideen, die reinströmen.
 

Neue Beiträge