© best_vector/Shutterstock.com
Kolumne: XAML Expertise

Kolumne: XAML Expertise


In der Kolumne „XAML Expertise“ präsentiert Gregor Biswanger Top-How-tos zum Thema XAML. Einsteiger und fortgeschrittene XAML-Experten sollen hier durch geballtes Wissen gesättigt werden. Heute gibt es folgende Expertisen: „XAML: Mit XamlFaker Designdaten erzeugen“, „WPF: TreeView per Standard aufklappen“ und „WPF: Toast Notifications mit WPF“. Viel Spaß mit XAML Expertise.

XAML: Mit XamlFaker Designdaten erzeugen

Der XAML-Designer ist für das Entwerfen der Oberfläche per Drag and Drop nicht unbedingt die beste Wahl. Seine wesentliche Stärke ist die visuelle Vorschau des aktuellen Designs. Dazu bietet Visual Studio eine umfangreiche Data-Sources-Toolbox, die zur Designzeit einige Beispieldaten generieren kann. Über einen Wizard stehen hierbei drei unterschiedliche Quellen zur Auswahl: Datenbank, Web Services oder ganz normale Objektklassen. Nach der Auswahl stehen die Datenfelder aufgelistet im Data-Sources-Fenster. Hier kann man noch einmal Einfluss auf die Beispieldaten nehmen und sie anschließend per Drag and Drop auf die gewünschten Steuerelemente ziehen. Der XAML-Designer geniert hierbei automatisch den nötigen Code und legt ein Data Binding fest.

Wird ein Drag and Drop auf eine freie weiße Fläche durchgeführt, wird sogar das passende Steuerelement mit Data Binding erzeugt. Tatsächlich zeigt sich in der Praxis aber, dass dieses umfangreiche Tooling oft zu viel des Guten ist. So hat der zusätzlich generierte Code in der Code-Behind-Datei einen unangenehmen Beigeschmack, gerade wenn im Projekt auf eine MVVM-Architektur gesetzt wird.

Die kostenlose Library XamlFaker ist hingegen eine leichtgewichtige Lösung, die ohne Wizard und Codegenerierung auskommt. Die Erweiterung kann ganz einfach mit Install-Package XamlFaker über NuGet bezogen werden. Mit XamlFaker sind in jeder XAML-Datei nur noch zwei Attribute anzugeben:

Designer.ViewModelType="{x:Type ViewModels:MainWindowViewModel}" d:DataContext="{d:DesignInstance Type=ViewModels:MainWindowViewModel}"

Beim ersten Attribut wird festgelegt, dass der Designer die Bindings auflösen kann. Das ist relevant für die IntelliSense von Properties. Beim zweiten Attribut wird ein fiktiver DataContext mit Dummydaten erzeugt. Dabei werden für alle Properties zufällige Daten erzeugt und in der Oberfläche angezeigt; die Daten sind meistens völlig willkürlich, aber gerade für die Designanzeige ideal. Unterstützt werden alle primitiven Datentypen, alle komplexen Properties und Mengen wie ein IEnumerable oder eine ObservableC...

Neugierig geworden? Wir haben diese Angebote für dich:

Angebote für Gewinner-Teams

Wir bieten Lizenz-Lösungen für Teams jeder Größe: Finden Sie heraus, welche Lösung am besten zu Ihnen passt.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang