Asynchrones Laden von mischbaren Beispieldaten in MVVM Light im Konstruktor des Ansichtsmodells

Ich habe ein Windows Phone 8.1 MVVM Light-Projekt undIch kämpfe darum, es mischbar zu halten.

Wie ich es sehe habe ich ein paar möglichkeiten. Ich kann verschiedene Ansichtsmodelle laden, je nachdem, obViewModelBase.IsInDesignModeStatic ist wahr imViewModelLocator Konstruktor, oder ich kann testenViewModelBase.IsInDesignModeStatic im Konstruktor des Ansichtsmodells und laden Sie die Daten entsprechend.

WennViewModelBase.IsInDesignModeStatic ist wahr, ich muss Daten aus der Datei laden. Hier ist mein Code:

public async Task<ThingsSampleDataSource> GetSampleDataAsync()
{
    if (_DeserializedThingsSampleDataSource == null)
    {
        var dataUri = new Uri(_SampleDataJSONFile);
        var file = await StorageFile.GetFileFromApplicationUriAsync(dataUri);
        var jsonText = await FileIO.ReadTextAsync(file);
        _DeserializedThingsSampleDataSource = JsonConvert.DeserializeObject<ThingsSampleDataSource>(jsonText);
    }
    return _DeserializedThingsSampleDataSource;
}

Wenn ich diese Methode aufrufe, muss ich den Aufruf markierenawait und damit die aufrufende Methodeasync. Konstruktoren können jedoch nicht mit @ gekennzeichnet werdasync.

Oder ich kann eine ContinueWith-Fortsetzung bereitstellen, anstatt auf die Rückgabe des asynchronen Codes zu warten. Aber Blend lädt die Seite, bevor ContinueWith abgeschlossen ist.

Gegeben, dass Beispieldaten in das Ansichtsmodell oder den Locator-Service geladen werden Konstrukteure und es muss Daten aus einer Datei geladen werden, eine asynchrone Aktivität. Wie mache ich das in MVVM Light, damit die Beispieldaten in Blend verfügbar sind?

(N.B. Andere Antworten, die ich gefunden habe, zum Beispieldiese, MVVM Light nicht verwenden.)

Antworten auf die Frage(2)

Ihre Antwort auf die Frage