Anti Pattern Repository

In einer 2 stündigen Skypediskussion zum Thema “Wie baut man eigentlich ein vernünftiges Layer System?” wurde ich heute von einem Kollegen, der sich viel mit EF und Hibernate beschäftigt auf die folgenden beiden Artikel aufmerksam gemacht.

Say No to the Repository Pattern in your DAL & Repositories On Top UnitOfWork Are Not a Good Idea

Beide sind sehr unterhaltsam und einleuchtend geschrieben. Ich selbst habe mir schön länger angewöhnt Repositories zu schreiben und einzusetzen doch hatte schon immer einen etwas faden Beigeschmack dabei. Nicht nur wird ziemlich deutlich warum dieses Pattern durchaus seine Schattenseiten hat, sondern wird auch eine durchaus einleuchtende Alternative Angeboten.

ExpandableMenu

Eine weitere Komponente an der ich immer wieder zwischendurch gearbeitet habe ist nun in ein brauchbares und vorzeigbares Stadium fortgeschritten. Es handelt sich dabei im Kern eigentlich nur um eine TreeView in Kombination mit einem Flyout. Die Komponente hat 3 verschiedene View States : – Maximized – Minimized – Collapsed Die Übergänge sind mit schicken Flyouts/ins gestaltet. Im Minimierten Zustand stellt das Menü nur noch die Symbole ( Vectorgrafiken ) dar und beim OnMouseOver werden die Einträge als Dropdownmenü dargestellt.

 

NavigationMenuMaximized

Menu im maximierten Zustand

NavigationMenuFadeOut

Übergangszustand

NavigationMenuMinimized

Minimierter Zustand

Ich will ne ganze Zahl

Dieses Stück Code war mein Fundstück der letzten Woche

Ich weiß nicht was der Author im Detail erreichen wollte aber hoffen wir mal nicht, dass er auf eine ganze Zahl checken wollte =)

WpfControls – MetroWindow

Seit einigen Wochen arbeite ich nun schon an einer Controlsuite für WPF. Es sind noch viele offene Baustellen, jedoch kann ich schon ein paar Resultate vorzeigen. Anfangen möchte ich dabei mit dem MetroWindow. Ich konnte mir für dieses Fenstercontrol sehr viel bei der Mahapps Library abschauen ( insbesondere die nativen Aufrufe ). Das meiste ist allerdings selbst geschrieben und meiner Meinung nach etwas eleganter gelöst aber das mag Geschmackssache sein.

Das Fenster besitzt einige nette Features wie Flyouts, DialogOverlays, Borderless, Schatten sowie die Möglichkeit einzelne Komponenten ein-/auszublenden. Derzeit arbeite ich an einer Navigationsmenü Komponente sowie einer ToolBar. Der größte Aufwand wird mit Sicherheit der ContentBrowser der sich ähnlich wie ein Webbrowser verhalten soll. Zunächst sollen aber einzelne Basiskomponenten fertig werden.

Hier das momentane MetroWindow ( Dieses erscheint auch so bei Windows 7 ). Voraussetzung ist das .NET Framework 4.5

Window

Das Fenster mit Min,Max Close im gängigen Windowsstil. Der Title ist in diesem Fall ausgeblendet

Border

Die Rahmenfarbe sowie die Schattierung lässt sich zur Laufzeit ändern

Thank God, .NET is open source

Heute habe ich zum ersten Mal großen Nutzen daraus gezogen, dass die .NET Plattform inzwischen open source gegangen ist. Ich arbeite derzeit an einer erweiterten Version einer WPF ToolBar mit eigenen Inhaltselementen. Für native .NET Controls wie Buttons, Checkboxen usw. kann man innerhalb einer ToolBar sehr leicht einen eigenen Stil hinterlegen der auch standardmäßig eingebunden wird. Das geht geht beispielsweise wie im folgenden XAML Code :

Sobald man jedoch ein selbst geschriebenes Control mit einem Standardstil versehen will, funktioniert das ganze nicht mehr, da die ToolBar logischerweise nicht weiß mit meinem Control umzugehen. Schaut man sich den Sourcecode der ToolBar in der Referenz an so sieht man auch wo das ganz implementiert ist ( siehe ab Zeile 474 ). Lösung ist also das Schreiben einer eigenen abgeleiteten ToolBar. Dort sollte dann die Methode PrepareForItemOverride überschrieben ( natürlich mit Base aufgerufen werden ) und der eigene ResourceStyleKey eingebunden werden.

Nachtrag:

Wie sich bei dieser Frage auf Stackoverflow.com herausstellt, gibt es auch leichtere Wege einen defaultstyle für Controls innerhalb anderer Controls zu definieren =)

Next Posts

Der Builder

Michael Morbach kleinÜber die Jahre habe ich mich auf Microsoft .NET C# spezialisiert und finde dort aktuell besonders die Entwicklung von modularen und verteilten Anwendungen mit WPF, WCF und PRISM interessant. Die modulare Aufteilung von Anwendungen in kleine funktionale Komponenten ist aus meiner Sicht der Inbegriff von moderner Softwarearchitektur.

Netzwerke


profile for KroaX at Stack Overflow, Q&A for professional and enthusiast programmers