Использование одного источника в дизайнере и одного в производстве. - PullRequest
1 голос
/ 03 августа 2011

Я занимаюсь разработкой приложения для Windows Phone 7, в котором привязываю свойство Image Source и использую конвертер для создания изображения.Примерно так:

<Image Source="{Binding Image, Converter={StaticResource MyImageConverter}}"></Image>

Это работает на эмуляторе, но приводит к сбою конструктора, поскольку MyImageConverter имеет зависимости от другого кода, который не создается конструктором.Можно ли как-нибудь заставить дизайнера игнорировать этот атрибут, или, что еще лучше, я могу указать другой источник, который используется только дизайнером?Я использую Visual Studio 2010, если это имеет значение.

Ответы [ 3 ]

3 голосов
/ 03 августа 2011

Если под «дизайнером» вы ссылаетесь на Blend или Cider (VS designer), вы можете использовать следующее, чтобы определить, находитесь ли вы в режиме разработки или нет

public static bool IsInDesignMode
{
    get
    {
        return DesignerProperties.GetIsInDesignMode(new DependencyObject());
    }
}

Затем оберните ваш код соответствующим образом.

1 голос
/ 03 августа 2011

Лучший и простой способ - использовать IsInDesignMode в .ctor ViewModel:

if (IsInDesignMode) {
    //Design time data
} else {
    // production
}
0 голосов
/ 03 августа 2011

Вместо этого вы можете назначить свойства Source в коде в конструкторе и использовать условную компиляцию:

#if DEBUG
  // assignments for development mode
#else
  // assignments for production mode 
#endif
...