Seiten

Mittwoch, 7. September 2011

Nokia Tune Remake --- Create And Vote

Schon gehört? Nokia sucht einen neuen "Nokia Tune". Bis zum 05.10.2011 läuft ein öffentlicher Wettbewerb. Der Gewinner wird am 07.10.2011 bekanntgegeben. Es lohnt sich übrigens, die bisherigen Einsendungen anzuhören. Mein Favorit ist #367 "Nokia One World". Und wer weiß, vielleicht findet sich ja bald Euer Favorit auf dem neuen Nokia Windows Phone. So ... Create And Vote!

Mittwoch, 24. August 2011

ListBoxItem Style: Vergrößerung des getrimmten Textes bei MouseOver

In der Expression Gallery habe ich einen neuen ListBoxItem style veröffentlicht. Er bietet die Funktionalität, längeren, aber getrimmten Text beim Bewegen des Mauszeigers über das ListBoxItem zu erweitern, so dass der Text vollständig sichtbar wird. Wir alle kennen dieses Verhalten, das vergleichbar ist dem Verhalten des Windows Explorer bei der Anzeige von Dateinamen oder Ordnernamen, der zu lang ist für die Anzeige in einer bestimmten Spalte.

Viel Spaß damit. Ich hoffe, ich finde in nächster Zukunft die Zeit, hierüber einen kurzen Artikel zu schreiben.

Download: Vollständiger Quellcode des Beispielprojekts in der Expression Gallery.

P.S.: Es ist wirklich sehr lange her, seit meinem letzten Blog-Post. Danke an alle, die weiterhin meinen Blog lesen.

Mittwoch, 25. Mai 2011

Windows Phone Developer Tools 7.1 Beta veröffentlicht - inklusive Visual Basic-Unterstützung für Silverlight und XNA

Es gibt großartige Neuigkeiten für die VB.Net-Community: Die Windows Phone Developer Tools 7.1 Beta sind veröffentlicht worden und stehen zum Download bereit. Hier kann man nachlesen, dass Visual Basic jetzt für Silverlight und XNA Framework-Anwendungen verfügbar ist. Visual Basic ist also vollständig in die Windows Phone Developer Tools 7.1 Beta integriert.

Einen wichtigen Hinweis gibt es hier, wonach empfohlen wird, die Windows Phone Developer Tools 7.1 Beta auf einer separaten Maschine zu installieren.

Außerdem wurde das Windows Azure Toolkit for Windows Phone 7 veröffentlicht, das mit den Windows Phone Developer Tools 7.1 Beta zusammen verwendet werden kann. Für VB.NET-Entwickler gibt es insofern hier einen ergänzenden Hinweis zu wichtigen Updates.

Dienstag, 10. Mai 2011

Teil 2: Spaltentransposition Chiffre mit "CubeCrypt 2011" - Verwendung von "CubeCrypt 2011"

Dies ist der zweite Teil der dreiteiligen Artikelserie über das Tool "CubeCrypt 2011". Dieser zweite Teil zeigt die Verwendung von "CubeCrypt 2011". Hier sind nochmal alle Teile der Artikelserie in der Übersicht:

Teil 1: Das Verfahren der "Spaltentransposition"
Teil 2: Verwendung von "CubeCrypt 2011"
Teil 3: Kryptologie und Kryptanalyse der "Spaltentransposition" (noch nicht veröffentlicht)

Dieser zweite Teil behandelt die Verwendung von "CubeCrypt 2011" und die Implementierung des Werkzeugs in eine Silverlight-Anwendung. Im Abschnitt "Implementierung mit Datenbindung" zeige ich eine Lösung auf, wie man "CubeCrypt 2011" auch im Rahmen einer Datenbindung nutzen kann, ohne dass im Quellcode (weder Xaml noch C# oder VB) ein Klartext-Passwort vorhanden ist.

Dienstag, 3. Mai 2011

Teil 1: Spaltentransposition Chiffre mit CubeCrypt 2011 - Das Verfahren der "Spaltentransposition"

Seit gestern ist "CubeCrypt 2011" in der Expression Gallery zum Download bereitgestellt. "CubeCrypt 2011" ist ein Tool für Silverlight. Es ermöglicht das Verschlüsseln und Entschlüsseln von Text mithilfe eines speziellen Verschlüsselungsverfahrens. Dieses Verschlüsselungsverfahren wird "Spaltentransposition" genannt.

Diese dreiteilige Artikelreihe stellt das Verschlüsselungsverfahren der "Spaltentransposition" kurz vor und zeigt, wie man "CubeCrypt 2011" in einer Silverlight-Anwendung verwendet. Schließlich werde ich auf die kryptologische Sicherheit des Verfahrens und mögliche kryptanalytische Angriffe eingehen. Hier ist der Inhalt dieser Artikelreihe in der Übersicht:

Teil 1: Das Verfahren der "Spaltentransposition"
Teil 2: Verwendung von "CubeCrypt 2011"
Teil 3: Zur Kryptologie und Kryptanalyse der "Spaltentransposition" (noch nicht veröffentlicht)

Mittwoch, 27. April 2011

Benutzerdefinierte angefügte Abhängigkeitseigenschaft IsKeepFocusVisual für den HyperlinkButton

Kürzlich habe ich ein HyperlinkButton Custom Control veröffentlicht. Dieses Custom Control hat die zusätzliche Funktion, visuell anzuzeigen, ob der HyperlinkButton geklickt wurde, auch wenn er den visuellen Focus verloren hat.

Die selbe Funktionalität habe ich nun mithilfe einer benutzerdefinierten angefügten Abhängigkeitseigenschaft für einen regulären HyperlinkButton realisiert. Der Download wird in der Expression Gallery bereitgehalten. Dort gibt es auch einen Link zu einer Beispielanwendung.

Diese Lösung ist eine alternative Herangehensweise. Die Implementierung dieser Funktionalität mittels einer benutzerdefinierten angefügten Abhängigkeitseigenschaft ist meine bevorzugte Lösung. Denn sie ermöglicht die größtmögliche Freiheit bei der Gestaltung des Style bzw. der Vorlage eines regulären HyperlinkButton.

Ich werde in den nächsten Tagen hier im Blog einen detaillierten Artikel über die alternativen Lösungen veröffentlichen.

Freitag, 15. April 2011

Datenbindung für den reichhaltigen Text eines RichTextBox-Steuerelements durch eine angefügte Abhängigkeitseigenschaft

Heute las ich einen Artikel in Delay's Blog über eine angefügte Abhängigkeitseigenschaft für ein WebBrowser-Steuerelement. Ich kann nur empfehlen, diesen Artikel mal zu lesen. Als ich diesen Artikel gelesen hatte, dachte ich mir, dass es cool wäre, wenn es etwas vergleichbares auch für die RichTextBox.Xaml-Eigenschaft gäbe. Die RichTextBox.Xaml-Eigenschaft ist eine einfache Eigenschaft vom Typ String und keine Abhängigkeitseigenschaft. Wenn dies eine Abhängigkeitseigenschaft wäre, so wäre es möglich, den Inhalt für eine RichTextBox über Datenbindung zu setzen.

Also habe ich mich hingesetzt und eine kleine Klasse geschrieben, mit deren Hilfe eine Datenbindung für den reichhaltigen Inhalt einer regulären RichTextBox möglich wird. Dabei wird die angefügte Abhängigkeitseigenschaft XamlSource verwendet.

Eine Verwendung dieser angefügten Abhängigkeitseigenschaft setzt natürlich voraus, dass man einen String hat, der Xaml-Code enthält, der von der RichTextBox.Xaml-Eigenschaft verstanden wird. Hierfür verwende ich einfach xml-Dateien, die zuvor mit meinem RichTextBox.Xaml Builder Addin erstellt wurden.

Nachfolgend stelle ich eine kleine Beispielanwendung vor und beschreibe kurz, wie einfach die Logik funktioniert.

Mittwoch, 6. April 2011

Stay Selected HyperlinkButton Custom Control

In einer Silverlight-Navigationsanwendung mit mehreren HyperlinkButton-Steuerelementen ist es ein bekanntes Problem: Wenn der Nutzer den Fokus beispielsweise in ein TextBox-Steuerelement setzt, dann verliert der HyperlinkButton seinen Fokus. Mit dem Verlust des Fokus verliert der HyperlinkButton zugleich seine Indikatorwirkung, das heißt, er zeigt nicht mehr an, welche Seite derzeit aktiv ist.

Der SilverLawHyperlinkButton, ein custom control, zeigt eine Lösung für dieses Problem auf.

Donnerstag, 31. März 2011

Beispiel eines kreisrunden ProgressBar

In der Expression Gallery findet Ihr ein neues Beispielprojekt für einen kreisrunden ProgressBar-Style. Das Beispiel benutzt einen Style für das ProgressBar-Steuerelement und etwas code behind, um die Funktionalität zu implementieren.

Mittwoch, 23. März 2011

Movie Countdown in Silverlight

In der Expression Gallery findet Ihr ein Beispiel für einen "Movie Countdown", realisiert in Silverlight. Es gibt sicherlich viele andere Herangehensweisen, um einen "Movie CountDown" zu bauen. Ich habe den Ansatz gewählt, ein ProgressBar-Steuerelement als Grundlage zu nehmen.

Hier ist das Beispiel:

Sonntag, 20. März 2011

Freihändiges Zeichnen LayoutPaths zur Laufzeit

In der Expression Gallery findet Ihr ein kleines Beispiel-Projekt für das freihändige Zeichnen von LayoutPaths für eine PathListBox zur Laufzeit.

Hier geht's zum Download.

Donnerstag, 17. März 2011

Eine Umfrage - Werbung in diesem Blog?

Seit Längerem denke ich darüber nach, wie die Leser meines Blogs es wohl aufnehmen würden, wenn ich es zulassen würde, dass in diesem Blog Werbung geschaltet wird. Ich möchte das in Eure Hände legen und deswegen Eure Meinung dazu erfragen.

Dienstag, 15. März 2011

Bildvergleich mithilfe eines GridSplitter

Dieses Beispiel demonstriert, wie man ein GridSplitter-Steuerelement verwendet, um zwei Bilder zu vergleichen. So kann man beispielsweise einen Vergleich vorher nachher umsetzen.

Montag, 14. März 2011

Half Square UserControl

Ich habe ein UserControl entwickelt, mit dem ein Halbquadrat erstellt werden kann. Den Download gibt es als .dll in der Expression Gallery. Einen Artikel über die Berechnungslogik für ein Halquadrat, erstellt aus einem RegularPolygon, findet Ihr hier.

Dienstag, 8. März 2011

VB.NET-Version von Beat Kiener's DependencyPropertyChangedListener für Silverlight

Beat Kiener veröffentlichte in seinem Blog vor einiger Zeit einen sehr nützlichen Artikel, in dem er eine von ihm entwickelte DependencyPropertyChangedListener Klasse für Silverlight vorstellte.

Hier geht es zu dem lesenswerten Artikel von Beat Kiener, wo es auch den Quellcode der C#-Version gibt.

Der DependencyPropertyChangedListener ermöglicht es, nach Veränderungen des Werts einer Abhängigkeitseigenschaft zu lauschen und über ein Event hierüber benachrichtigt zu werden. Das ist in vielen Szenarien eine sehr nützliche Sache.

Ich habe den DependencyPropertyChangedListener von Beat Kiener übersetzt nach VB.NET. Denn ich konnte die Klasse in einem VB.NET-Projekt sehr gut brauchen. Beat Kiener war so freundlich und gab mir die Erlaubnis, die von mir übersetzte VB.NET-Version hier in meinem Blog zu veröffentlichen. Vielen Dank nochmal dafür!

Hier also ist der Quellcode der VB.NET-Version (die originalen Kommentare habe ich beibehalten):

Sonntag, 6. März 2011

How To: Ein Halbquadrat aus einem RegularPolygon (Dreieck) erstellen

Das ist ein Halbquadrat, auch bezeichnet als gleichschenklig-rechtwinkliges Dreieck:


Ein Halbquadrat wird als Halbquadrat bezeichnet, weil man es erzeugen kann, indem man ein Quadrat über seine Diagonale teilt. Dieser Artikel beschreibt, wie man ein solches Halbquadrat aus einem RegularPolygon erstellt. Dabei soll das Halbquadrat in einem quadratischen Canvas-Steuerelement platziert werden und zwar exakt so, dass es das Canvas über seine Diagonale teilt. Außerdem soll das Halbquadrat auch dann, wenn es einen Rand hat, also eine StrokeThickness mit einem Wert größer als "0", jeweils exakt positioniert bleiben. Das ist etwas trickreich. Schließlich soll das Halbquadrat so konfiguriert werden, dass es nur über eine einzige Eigenschaftsänderung ("Rotation") die Eck-Ausrichtung des rechten Winkels ändert.

Auf geht's.

Mittwoch, 2. März 2011

How To: Eine Aktion erst mit der vollständigen Sichtbarkeit einer Anwendung im Browserfenster starten

In meinem letzten Artikel habe ich beschrieben, wie man ein Storyboard erst dann startet, wenn die Anwendung im Browserfenster sichtbar wird. Die dort vorgestellte Lösung hat jedoch eine Beschränkung. Diese Beschränkung besteht darin, dass das Storyboard schon dann startet, wenn die Anwendung auch nur teilweise im Browserfenster sichtbar wird. Das liegt daran, dass das Ereignis "CompositionTarget.Rendering()" feuert, sobald auch nur ein Pixel der Anwendung sichtbar wird.

In diesem Artikel beschreibe ich eine Lösung, die es ermöglicht, eine Aktion erst dann zu starten, wenn die Anwendung vollständig im Browserfenster sichtbar ist. Diese Technik kann beispielsweise für das Erstellen einer Silverlight-Anwendung nützlich sein, mit der eine Werbung dargestellt werden soll.

Sonntag, 27. Februar 2011

How To: Storyboard erst mit dem Sichtbarwerden der Anwendung im Browserfenster starten

In zwei früheren Artikeln habe ich Techniken beschrieben, um ein Storyboard erst dann zu starten, wenn das Laden der Silverlight-Anwendung abgeschlossen ist. Diese Techniken helfen spätestens dann nicht mehr, wenn die Silverlight-Anwendung eine kleine Größe hat, Bestandteil einer größeren html-Seite ist und zunächst nicht sichtbar ist, wenn die html-Seite startet, z.B. weil sie am untersten Ende der html-Seite eingebettet ist.

Dieser Artikel schließt diese Lücke.

Sonntag, 13. Februar 2011

Einfacher HyperlinkButton Style

Ich habe einen neuen HyperlinkButton Style gestaltet, der in der Expression Gallery heruntergeladen werden kann. Er hat ein sehr schlichtes Design mit ein paar dezenten Animationen. Schaut es Euch einfach an.

Freitag, 4. Februar 2011

Zweite Alternative: Storyboard soll nicht beginnen, bevor die Silverlight-Anwendung vollständig geladen ist

Hierzu hatte ich vor einiger Zeit schon einmal einen kurzen Artikel geschrieben. Das Problem ist bekannt: Ein Storyboard soll nicht starten, bevor die Anwendung vollständig geladen und sichtbar ist. Dieser Artikel zeigt eine andere, alternative Lösung auf.

Donnerstag, 3. Februar 2011

SpriteAnimationBehavior

Ich habe ein Behavior für ein Image Steuerelement entwickelt, mit dem man dem aus dem Image eine Szenerie für eine Spriteanimation machen kann. Das Behavior kann in der Expression Gallery heruntergeladen werden.

Dienstag, 1. Februar 2011

How To: Freihandzeichnung mit Path-Erstellung synchronisieren

Sharker Khaleed Mahmut beschreibt in einem Artikel, wie mithilfe eines InkPresenter zur Laufzeit auf ein Image gezeichnet werden kann. Wie das geht, könnt Ihr dort nachlesen. In diesem Artikel geht es darum, wie synchron mit einer Freihandzeichnung auf einen InkPresenter in einem Canvas-Steuerelement Path-Elemente erzeugt werden, die exakt dem entsprechen, was auf den InkPresenter gezeichnet wird. Ein Beispielprojekt mit Quellcode steht zum Download in der Expression Gallery.

Das ist ziemlich einfach und es funktioniert so.

How To: Storyboard Completed Behaviors verwenden

Kürzlich gab es eine sehr interessante Diskussion zu einer Frage, die im Expression Blend + SketchFlow Forum gestellt wurde. Die Frage war von jemandem gestellt worden, der "Expression Blend 4" als Designer nutzt. Die Frage war, wie man ein anderes Storyboard beginnen kann, unmittelbar nachdem ein Übergang in einen visuellen Zustand beendet ist oder nachdem ein Storyboard beendet ist.

Aus der Sicht eines Entwicklers ist diese Frage einfach zu beantworten. Für einen Designer, der nicht oder wenig programmieren kann, kann diese Anforderung problematisch sein. Die Diskussion erinnerte mich daran, dass Behavior eigentlich als ein Werkzeug für Designer gedacht sind.

Also machte ich mich daran, ein Behavior zu schreiben, dass diese einfachen Aufgaben erledigt. Das Ergebnis sind die StoryboardCompletedBehaviors.

Im Folgenden beschreibe ich, wie man diese Behaviors verwendet.

Der Artikel ist ganz bewußt sehr ausführlich und mit kleinen Schritten gestaltet. Fortgeschrittene Nutzer von Expression Blend können sich darauf beschränken, die "Übersicht (Overview)" und "Schritt 3" zu lesen.

Montag, 31. Januar 2011

Synchronisieren einer Freihandzeichnung mit einer realen Path-Erstellung

In der Expression Gallery findet Ihr eine neue Beispielanwendung. Das Beispiel demonstriert, wie man eine Freihandzeichnung, die zur Laufzeit mit der Maus in einem InkPresenter erzeugt wird, mit dem Erstellen von realen Pfad-Elementen in einem Canvas synchronisieren kann. In einem Canvas werden also WYSIWYG Path-Elemente erzeugt, die dem entsprechen, was auf einen InkPresenter gezeichnet wird.

Hier sind ein paar Screenshot:

Dienstag, 25. Januar 2011

Ein Bildbetrachter mit Lupe

In der Expression Gallery findet Ihr ein neues Beispielprojekt. Es ist ein Bildbetrachter mit Lupe. Einige coole features sind dabei. Schaut es Euch einfach an und spielt damit. Der Quellcode ist wie immer dabei.

Hier sind ein paar Screenshots:

Montag, 24. Januar 2011

Echte bewegliche Lupe - Silverlight 4

Ich habe ein Beispielprojekt für eine alternative Vorgehensweise zum Erstellen einer Bilder-Lupe entwickelt. Meine Lösung implementiert einen echten MagnifyEffect, der mit einem dynamischen Beschneidungspfad kombiniert ist.

Nachfolgend seht Ihr ein Beispiel, das diese Technik nutzt.

Freitag, 14. Januar 2011

How To: Sanfte Animation eines Magnify-Effekt

Kürzlich habe ich das Beispiel-Projekt "Just Fun" in der Expression Gallery veröffentlicht. Bestandteil dieses Projekts ist ein animierter Magnify-Effekt. Dieser Effekt wirkt in dem Beispiel - wie ich finde - deswegen ziemlich cool, weil das visuelle Element, auf das der Effekt angewendet wird, ein Linsenglas ist.

Dieser Artikel hier beschreibt kurz, wie man einen Magnify-Effekt sanft animiert. Er ist sehr einfach nachzuvollziehen. Das Beispielprojekt kann in der Expression Gallery angeschaut werden. Dort steht auch der Quellcode zum Download bereit.

Mittwoch, 12. Januar 2011

Einfach nur Spass

Dieses Beispielprojekt ist einfach nur Spass. Mit aktivierter Lupe erzeugt man ein unterschiedliche Gesichter, je nachdem, wo auf die Blende geklickt wird.

Dienstag, 11. Januar 2011

Bildbetrachter mithilfe eines GridSplitter-Steuerelements

Ich weiß nicht, welche Erfahrungen Ihr gemacht habt. Ich habe jedenfalls den Eindruck, dass das GridSplitter-Steuerelement eher eine Außenseiterrolle einnimmt. Also habe ich mir eine vielleicht sinnvolle Verwendung für ein GridSplitter-Steuerelement überlegt. Das Ergebnis ist der "GridSplitter Picture Viewer".

Montag, 3. Januar 2011

ChildWindowResizeBehavior Silverlight 4 - Quellcode

Vor einiger Zeit veröffentlichte ich in der Expression Gallery ein ChildWindowResizeBehavior für Silverlight 4. Das Behavior ermöglicht es, einem Silverlight 4 ChildWindow die Funktionalität hinzuzufügen, es durch das Drehen des Mausrads in seiner Größe zu verändern. Ergänzend ist ein Ereignis implementiert, mit dessen Hilfe zur Laufzeit die aktuelle Größe des ChildWindow abgefragt werden kann. Das ist das OnSizeChangedEvent.

Der ursprüngliche Download in der Expression Gallery enthielt das Behavior nur als kompilierte .dll-Datei. Für dieses Behavior findet Ihr jetzt am Ende dieses Artikels den Download-Link für den vollständigen Quellcode des Projekts (VB.NET).

Out Of Browser Experience UserControl - Quellcode

Vor ziemlich genau einem Jahr habe ich in der Expression Gallery das OOBControl Version 1.1 veröffentlicht. Dieses für Silverlight 3 entwickelte Benutzersteuerelement kapselt die Out Of Browser Funktionalität für eine Anwendung und ermöglicht es, eine Silverlight 3-Anwendung durch einfaches Einfügen des OOBControl auf die Benutzeroberfläche Out Of Browser-fähig zu machen. Bis heute haben 6.141 Designer oder Entwickler das OOBControl heruntergeladen. Vielen Dank an alle für diese tolle Resonanz. Der Download beinhaltet das UserControl allerdings nur als kompilierte .dll-Datei.

Ich habe mich entschieden, die weitere Entwicklung des für Silverlight 3 entwickelten OOBControl der Community zu überlassen und deswegen den Quellcode zu veröffentlichen. Der folgende Download-Link beinhaltet den Quellcode in VB.NET.

Download: Quellcode des OOBControl Version 1.1.