WPF Evaluation: Ressourcen

Ich stelle mir XAML Ressourcen als eine Art statische Felder vor, die beim Starten der Anwendung automatisch initialisiert werden. Natürlich ist dieses Bild etwas vereinfacht, da es Konzepte wie die hierarchische Sichtbarkeit nicht wirklich wiedergeben kann, aber für einen Einstieg in die Thematik sollte es reichen.

Eine der wohl üblichsten Verwendungsarten von in XAML definierten Ressourcen sind sicherlich Abbildungsvorschriften von Daten auf Oberflächenelementen (e.g. <DataTemplate x:Key=”ShortDescription”>) und Styles (e.g. <Style x:Key=”DescriptionHeader”>), ich fand es im Bereich der Oberflächengestaltung auch recht praktisch, beliebige Strukturen vordefinieren zu können (e.g. <StackPanel x:Key=”LongDescription”>).

Genauso nützlich ist es, globale Instanzen einmalig definieren zu können (e.g. <app:ProgramGuide x:Key=”TheGuide” />), wobei diese sich oft (wenn die Reihenfolge der Definition es erlaubt) auch gegenseitige referenzieren können (e.g. <app:Filter x:Key=”GuideFilter” /> und <app:ProgramGuideView x:Key=”GuideView” GuideFilter=”{StaticResource GuideFilter}” Source=”{Binding Source={StaticResource TheGuide}, Path=Events, IsAsync=true, Mode=OneTime}” />).

In der Beispielanwendung werden Ressourcen auch für Zeichenketten wie Formate (e.g <system:String x:Key=”DateTimeFormat”>dd.MM.yyyy HH:mm</system:String>) verwendet, wobei allerdings meiner persönlichen Ansicht nach hier die Grauzone zum Aspekt der Lokalisierung auf die gute alte WinForms Art (.resx) berührt wird. Auch wenn WPF anderen Ideen zur allgemeinen Lokalisierung mit sich bringt, könnte es für diese Fälle (Zeichenketten, die lokalisierbar sein sollten, aber nicht direkt in der Oberfläche erscheinen) eleganter sein, auf RESX und die StaticResource Markup Erweiterung zu setzen.

Als letztes finde ich im Rahmen der Beispielanwendung erwähnenswert, dass auch Felder als XAML Ressourcen angelegt werden können (e.g. <x:Array Type=”system:DateTime” x:Key=”TimeSelections”> und darin <system:DateTime>00:00</system:DateTime> et al).

Happy Coding

Jochen