Mirror Reflections von Images Design-Time-freundliches ViewModel Testen von WP7-Apps (Teil 2)
Kommentare

Menü 2 für Experten: Design-Time-freundliches ViewModel
Seit Expression Blend 3 gibt es das DesignTimeData-Feature, mit dem sich der Designer unabhängig vom Entwickler Beispieldaten zum Designen bereitstellen

Menü 2 für Experten: Design-Time-freundliches ViewModel

Seit Expression Blend 3 gibt es das DesignTimeDataFeature, mit dem sich der Designer unabhängig vom Entwickler Beispieldaten zum Designen bereitstellen kann. Jedoch bieten die Beispieldaten eben nur einfache Dateninformationen und keine Zustände. Um zur Designzeit explizite Informationen und Zustände zu definieren, muss etwas Sourcecode im ViewModel geschrieben werden. Nun kommen aber folgende Probleme auf den Entwickler zu: Die Daten und Zustände sollen wirklich nur im Designer von Visual Studio oder Expression Blend bereitstehen und nicht zur Laufzeit beim Debugging. Dann sollen die unnötigen Klassen und Methodenaufrufe beim Kompilieren und Veröffentlichen der Silverlight-Anwendung entfernt werden, um die Dateigröße der XAP-Datei zu minimieren.

Nichts leichter als das! Dazu wird eine Klasse angelegt, die dafür zuständig ist, die Beispieldaten und Zustände zur Designzeit bereitzustellen. Um sicher zu gehen, dass diese Klasse auch nur zur Designzeit ausgeführt wird, wird sie im Kontruktor mittels der statischen Klasse DesignerProperties abgefragt. Um die Klasse dann bei der Veröffentlichung auszuschließen, muss das Conditional-Attribut mit dem String DESIGN der Klasse definiert werden. Zur Übersicht zeigt Listing 2 den Sourcecode des ViewModels, hierbei wurde aus Platzgründen direkt ins ViewModel geschrieben und auf eine eigene Klasse verzichtet.

Damit die Klassen und die Methodenaufrufe vorerst zur Designzeit zur Verfügung stehen können, muss unter den Eigenschaften des Silverlight-Projekts noch ein Parameter DESIGN unter den Reiter Build (Abb. 2) hinzugefügt werden. Wird die Silverlight-Anwendung später veröffentlicht, muss nur der Punkt DESIGN wieder aus den Projekteigenschaften entfernt werden. Somit wird nach der Build-Erstellung unnötiger Sourcecode bei der XAP-Datei ausgelassen

Listing 2: Beispieldaten zur Design-Time bereitstellen

public class ViewModelExample
{
    public ObservableCollection Data { get; set; }

    public ViewModelExample()
    {
        Data = new ObservableCollection();

        GenerateDesignerData();
    }

    [Conditional("DESIGN")]
    private void GenerateDesignerData()
    {
        if(!DesignerProperties.IsInDesignTool) return;

        Data.Add("Test A");
        Data.Add("Test B");
        Data.Add("Test C");
        Data.Add("Test D");
        Data.Add("Test E");
    }
}  
Abb. 2: Silverlight-Projekteigenschaften mit Designparameter erweitern
Abb. 2: Silverlight-Projekteigenschaften mit Designparameter erweitern
Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -