Асинхронная загрузка образцов данных Blendable в MVVM Light в конструкторе модели представления

У меня есть проект Windows Phone 8.1 MVVM Light иЯ изо всех сил стараюсь сделать это смешанным.

На мой взгляд, у меня есть несколько вариантов. Я могу загрузить различные модели просмотра в зависимости от того,ViewModelBase.IsInDesignModeStatic верно вViewModelLocator конструктор, или я могу проверитьViewModelBase.IsInDesignModeStatic в конструкторе модели представления и загрузите данные соответственно.

ЕслиViewModelBase.IsInDesignModeStatic Это правда, мне нужно загрузить данные из файла. Вот мой код:

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;
}

Когда я вызываю этот метод, мне нужно пометить вызовawait и, таким образом, вызывающий методasync, Но конструкторы не могут быть отмеченыasync.

Или я могу предоставить продолжение ContinueWith вместо ожидания возврата асинхронного кода. Но Blend загружает страницу до завершения ContinueWith.

Учитывая, что образец данных загружается в модель представления или службу локатораконструкторы и он должен загружать данные из файла, асинхронное действие, как мне сделать это в MVVM Light, чтобы образцы данных были доступны в Blend?

(N.B. другие ответы, которые я нашел, например,этот, не используйте MVVM Light.)

Ответы на вопрос(1)

Ваш ответ на вопрос