Meine Tag Cloud ist ein soooo schönes Beispiel :)

Nicht weil es so unglaublich toll geschrieben wäre sondern weil man so viel daran über WPF und Silverlight lernen kann. So bin ich beispielsweise gefragt worden, warum ich die Tag Cloud eigentlich selbst in 3D gerendert habe statt die 3D Fähigkeiten von WPF zu nutzen. Und da gibt es eine einfache Antwort: Oliver :)

Der ist nämlich glühender Silverlight Fan und wollte unbedingt ein Beispiel, anhand dessen er den Port einer WPF Applikation Richtung Silverlight zeigen kann. Und Silverlight hat nun mal kein echtes 3D Modell wie WPF.

WPF-technisch gibts auch einiges Verbesserungspotential an dem Code (Teil meiner Vorträge momentan ist es, dieses Beispiel in verschiedene Richtungen auszubauen :)). So ist der Code gut und schön wenn ich die Elemente meines Containers selbst definiere. Was passiert aber wenn die Elemente per Databinding bekommen möchte und deswegen anstelle eines Canvas eine Listbox als Container nutze? Dann werden die Controls per DataTemplate dynamisch erzeugt und mein bisheriges Beispiel funktioniert nicht mehr.

Demnächst werde ich dazu ein paar Artikel über die Hintergründe in mein Blog posten, nur so viel: Aus diesem Dilemma gibt es mindestens zwei Auswege:

1. Die gerenderten Elemente mit Hilfe des Visual Trees ermitteln und bewegen (Stichwort: VisualTreeHelper)

2. Ein eigenes LayoutPanel schreiben. (eigentlich die schönere Lösung)

Tja.... es gibt viel an dem Beispiel herumzuspielen :)