предоставление данных ViewModel времени разработки для Blend и VS - PullRequest
3 голосов
/ 26 августа 2009

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

Ответы [ 2 ]

4 голосов
/ 26 августа 2009

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

Пример данных http://www.smips.com/brad/stackoverflow/design-model1.jpg

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

<navigation:Page DataContext={StaticResource MyFakeDesignData}

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

private void Home_Loaded(object sender, RoutedEventArgs e)
{
    DataContext = new MyRealViewModel();
}
3 голосов
/ 20 марта 2011

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

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

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

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

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

    <Сетка d: DataContext = "{Binding Source = {StaticResource DesignViewModel}}" "> ...

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

...