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 =)

JTL Tischtennis Rangliste

Seit einigen Wochen besitzen wir schon eine Tischtennisplatte auf der Arbeit. Es wird sehr fleißig gespielt und somit war es nur eine Frage der Zeit bis eine firmeninterne Rangliste her musste. Um das ganze nicht kompliziert pflegen zu müssen habe ich mich bereit erklärt ein kleines Programm mit ELO Ranking zu schreiben. Das ganze ist eigentlich der Rede Wert vor allem weil der Kern sehr dirty geschrieben ist. Aber es war für mich der erste Blick in Code First und EF 6.1. Ich muss sagen ich bin hellauf begeistert und kann es kaum erwarten mehr damit zu machen.

Zum Programm:

- Datenspeicher ist eine Compact SQL Datenbank
- Zugriffsschicht über EF 6.1
- Oberfläche ist mit WPF und MahApps Metro Controls gestaltet

Hier ein paar Screenshots
RanglisteMatchEintragen  SpielerEintragen

Nachdem ich vom MahApps Framework einiges lernen konnte habe ich auch weitere Motivation schöpfen können um an meiner eigenen Controlsuite weiter zu arbeiten.

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