Предоставление данных ViewModel времени разработки для Blend и VS

В приложении, основанном на MVVM, какие опции у меня есть для предоставления данных ViewModel во время разработки, чтобы наши дизайнеры могли что-то увидеть в Blend3 (и VS 2008). Как ты это делаешь? Могу ли я использовать mc:ignorable для этого как-нибудь?

2 ответа

Решение

Да, Expression Blend может помочь вам в этом. Используйте вкладку "Данные" для создания образцов данных, которые имеют ту же форму, что и ваши производственные данные. При создании источника данных снимите флажок "Включить образцы данных, когда приложение запущено".

http://www.smips.com/brad/stackru/design-model1.jpg

После того как вы создали пример данных, задайте для DataContext вашей страницы пример данных в XAML. Это позволит дизайнерам увидеть пример данных при открытии страницы в Blend.

<navigation:Page DataContext={StaticResource MyFakeDesignData}

В коде для обработчика Loaded напишите код, чтобы установить DataContext в реальную модель. Поскольку этот код будет запускаться только во время работы приложения, а вы указали пример данных, которые будут недоступны во время работы приложения, это означает, что работающее приложение получит реальные данные.

private void Home_Loaded(object sender, RoutedEventArgs e)
{
    DataContext = new MyRealViewModel();
}

Используя VS2010, вы можете использовать атрибуты времени разработки (работает как для SL, так и для WPF). В любом случае у меня обычно есть фиктивный источник данных, так что это всего лишь вопрос:

  • Добавление объявления пространства имен

    XMLNS:d="http://schemas.microsoft.com/expression/blend/2008"

  • Добавление контекста фиктивных данных в оконные / управляющие ресурсы

  • Настройка контекста данных времени разработки

    ...

Работает достаточно хорошо.

Другие вопросы по тегам