Heute ist es soweit, heute wird das final Relaese der WPF Applikation, an der ich vor über 4 Monaten begonnen hatte als Teil eines 7-köpfigen Teams zu arbeiten, an den Kunden ausgeliefert. In diesen 4 Monaten habe ich viel gelernt. Von der reinen Entwickler-Seite betrachtet sieht das so aus:
- Erstellung komplexer Styles und XAML Komponenten in ExpressionBlend
- Entwicklung eines “Coverflow” Moduls in C# “from scratch”
- Dokumentation des Codes nach den Regeln von “StyleCop“
- Produktiver Umgang mit “ExpressionBlend” und “VisualStudio”
- Continuous Integration mit “CruiseControl“
Was den Projektablauf an sich angeht, habe ich folgende Dinge sehr zu schätzen gelernt:
- Unterteilung des Projektes in 2-wöchige Iterationen
- Backlog mit Stories und Tasks
- Daily Standup-Meeting am Whiteboard mit LowLevel Plan
- Burndown Charts
- Issue-Tracker
Die Messlatte liegt nun sehr weit oben, mal sehen, ob das nächste Projekt wieder so strukturiert verläuft.
Lange habe ich danach gesucht (bestimmt 10 Minuten – was wirklich lange ist…) – jetzt habe ich die passende Property für Textfelder gefunden um Text nicht nur umbrechen zu lassen, sondern lange Wörter auch automatisch zu trennen:
IsHyphenationEnabled=”True”
Und schon wird ordentlich getrennt. Und ich dachte schon, das wäre nicht implementiert…
Ich arbeite seit einigen Monaten im Team an einer WPF Applikation, meine Aufgabe ist die Erstellung der Views (XAML) mit ExpressionBlend. Neben all dem Styling und ein paar statischen Animationen habe ich mich vor ein paar Tagen erstmals auch mit Animationen beschäftigt, die mittels C# in dem CodeBehindFile stattfinden. In dem Zusammenhang bin ich auf eine Animations-Engine gestoßen, die mir das Leben enorm erleichtert hat, quasi eine Übersetzung von “Tweener” für die Microsoft-Welt: Artefact Animator. Die Syntax kommt einem sofort vertraut vor, diese Zeile hier verwende ich z.B. um eine Objekt auf der X-Achse zu verschieben:
ArtefactAnimator.AddEase(myTranslateTransform, TranslateTransform.XProperty, animationTarget, 1, AnimationTransitions.ExpoEaseInOut, 0);
Dabei steht “myTranslateTransform” für ein in einer TransformGroup gespeichertes TranslateTransform-Objekt. Dem zu animierenden Objekt habe ich dann diese TransformGroup zugewiesen, das sieht im Code so aus:
TranslateTransform myTranslateTransform = new TranslateTransform ();
myTranslateTransform.X = 0;
TransformGroup myTranslateGroup = new TransformGroup();
myTranslateGroup.Children.Add(myTranslateTransform);
this.myObject.RenderTransform = myTranslateGroup;