ListBox, ComboBox oder was?

Im Rahmen meiner Einarbeitung in Silverlight / WPF bin ich auf eine Idee gestossen, die ich einmal an einem rudimentären Beispiel als Anschauungsmaterial implementiert habe. Die Aufgabenstellung an sich ist eigentlich sehr einfach: aus einer begrenzten Liste von Auswahlelementen soll eines vom Anwender ausgewählt werden. Ganz klar die Aufgabe einer ComboBox. Die Auswahl soll zudem graphisch und nicht in Textform präsentiert werden – auch keinerlei Herausforderung für Silverlight / WPF. Wie das Beispiel zeigt, kann man sich das auch optisch ein wenig anders vorstellen – zu den einzelnen Elementen der Testseite gleich mehr.

Startzustand

Im initialen Zustand wird die Auswahlliste als ListBox dargestellt – ohne die typische Sondervisualisierung der ComboBox mit dem Auswahlfeld zum Aufklappen. Verändert sich die Auswahl, so übernimmt die Listbox die Anzeige – auf Aspekte des ausgewählten Eintrags kann im XAML wie gewohnt referenziert werden, wie das Bild links oben und der relative Pfad des Bildes daneben zeigt. Das ist nun wirklich nichts Besonderes bis hierhin.

Aufgeklappt

Die Besonderheit zeigt sich aber, wenn man die Auswahl bestätigt. Die ListBox klappt dann scheinbar zu und zeigt nun nur noch den ausgewählten Eintrag.

Zugeklappt

Das Beispiel kann man sich selbst einmal hier anschauen, die Quellen gibt es hier. Es handelt sich wirklich nur um eine sehr elementare Implementierung, sicher nicht um ein vollwertiges Control. Was tut das Beispiel jetzt schon:

  • Beim Starten ist einer der drei Alternativen ausgewählt – sieht im Beispiel etwas häßlich aus, da meine Beispielbilder einen teilweise transparenten Hintergrund haben und die Auswahleinfärbung der Listbox auch im zugeklappten Modus erscheint: einfach vorstellen, dass der Hintergrund der Visualisierungselemente nicht transparent ist (man kann irgendein FrameworkElement verwenden).
  • In der oberen Zeile wird die Auswahl zur Demonstration als Bild und Pfad zusätzlich angezeigt.
  • Ein einfacher Klick auf die gewählte Alternative (großes Bild) öffnet die Auswahlliste.
  • Die Navigation in der Liste mit Maus oder Tastatur verändert die Auswahl, insbesondere kann diese wie gewohnt mit Strg-Click aufgehoben werden.
  • Ein Doppelklick oder die Taste ENTER beendet die Auswahl und schließt die Liste, es wird nun die letzte Auswahl angezeigt.
  • Die Eingabe des Pfades in der oberen Zeile kann zur Änderung der Auswahl verwendet werden – uh, Injection Attack möglich, schert hier aber nicht.
  • Hat die zugeklappte Liste den Fokus, so kann die Auswahl weiterhin mit der Maus verändert werden – die Liste klappt dazu automatisch auf.
  • Im XAML der Seite sieht man, dass die Auswahl vorbelegt werden kann, was natürlich optional ist.

Happy Coding

Jochen

DVB.NET 4.0 Zeitplaner für VCR.NET – erste Schritte

In DVB.NET 4.0 wird es wie bereits angekündigt einen neuen Zeitplaner für Aufzeichnungen und Aufgaben geben, den auch VCR.NET 4.0 verwenden soll. Ich habe auf der vorläufigen Web Site von DVB.NET 4.0 einige Überlegungen zusammengestellt – leider noch etwas krude, aber für mehr reicht die Zeit in diesem Moment nicht, später gibt es hoffentlich noch eine ordentliche Überarbeitung in Form und Inhalt. Auch mit der Implementierung bin ich noch nicht wirklich zufrieden, da der verwendete Algorithmus gerade bei einer größeren Zahl gleichartiger Geräte und mehreren überlappenden Aufzeichnungen leicht in hohen Ressourcenbedarf (Laufzeit und Hauptspeicher) getrieben werden kann. Da ich aber nicht weiß, wann ich zum nächsten Schritt komme, gebe ich einfach den aktuellen Stand mal zu Spielen frei – ich werde demnächst im Forum etwas mehr dazu schreiben, wie mich VCR.NET Anwender in dieser frühen Entwicklungsphase unterstützen und darüber vielleicht sogar noch eigene Anforderungen einbringen können.

Zuerst einmal kann das Testprogramm auch ohne DVB.NET / VCR.NET Installation ausgeführt werden, wenn Silverlight 4 im Web Browser unterstützt wird. Dazu kann man die Startseite des Testprogramms direkt auf meiner Web Site aufrufen. Zwar geht das Planen nicht ohne Geräteprofile, aber auch dafür braucht man keine DVB.NET Installation. Ich habe die Beispielprofile, die auch in der Beschreibung des Zeitplaners referenziert werden, zum Download bereit gestellt. Einfach irgendwo hin lokal kopieren und von dort in das Testprogramm laden – los geht es.

Für den rein lokalen Betrieb einfach die XAP und HTML vom Download Bereich auf die Festplatte kopieren – bevorzugt in das Installationsverzeichnis des VER.NET Recordings Service, in den Beispieltexten wurde die start.html unter dem Namen ScheduleUITestPage.html abgelegt, der Name der Silverlight XAP darf nicht verändert werden. Für den VCR.NET Betrieb benötigt man allerdings zumindest das Halloween 2011 Preview der Version 4.0, damit die Aufzeichnungen und Aufgaben ausgelesen werden können – DVB.NET und VCR.NET.

Bis bald

Jochen

Silent Running

Ja, es ist im Moment etwas still geworden um die Weiterentwicklung von VCR.NET 4.0. Leider bin ich doch deutlich mehr anderweitig gebunden, als ich gehofft habe und komme nur langsam voran. Aber um mich mal zu melden hier ein kurzer Status: wie im Forum angesprochen ist ein für mich wichtiges Thema eine neue Aufzeichnungsplanung. Diese wird nach völlig anderen Konzepten vorgehen als alle bisherigen Lösungen und soll vor Allem die Nutzung mehrerer Karten erleichtern. Ich bereite im Moment im Rahmen der Tests ein kleines Silverlight Tool vor, das es den Beta-Testern erlauben wird, mit zur Weiterentwicklung von VCR.NET beizutragen. Etwas einfacher als das Bildchen unten es zeigt soll der Aufruf einer HTML Seite mit dem Silverlight Tool darauf darstellen, wie VCR.NET eine vorhandene Liste von Aufzeichnungen in Zukunft planen würde – ohne lästige Zuordnung einzelner Geräte. Schauen wir mal, ob das klappt.

Bis bald (hoffentlich nicht erst wieder in einem Monat)

Jochen

So könnte das Tool aussehen

Erste Testversion von VCR.NET 4.0 auf Basis von .NET 4.0

Ich habe die aktuelle 4.0er Testversion auf .NET 4.0 umgestellt und seit einigen Wochen im privaten Einsatz. Bisher konnte ich kein Fehlerverhalten feststellen, darum habe ich diese Version hier zum Testen auf eigene Gefahr bereit gestellt – die auf .NET 3.5 basierende Variante wird in den nächsten Tagen verschwinden. Viel getan hat sich leider sonst noch nicht – ich habe zwar einige Baustellen angefangen, diese aber noch nicht abgeschlossen. Ich werde versuchen, in naher Zukunft im Forum einige Informationen zum aktuellen Stand und den Planungen für das 4.0er Release bereit zu stellen.

Viel Spaß

Jochen