Смешиваемость с d: DataContext.Что мне не хватает? - PullRequest
5 голосов
/ 01 сентября 2010

Мне кажется, что я все еще вижу много рекомендаций и советов, утверждающих, что подход с ориентацией на первый взгляд - это лучший способ получить Blendability в вашем приложении. Однако с d: DataContext, d: DesignData и d: DesignInstance разве не легко решить проблему смешиваемости независимо от того, как ваши представления и модели представления соединены вместе?

С DesignInstance вы просто выбираете конкретный тип ViewModel, который будет использоваться в конструкторе, и это как если бы у вас была композиция с первым просмотром. Фактически, использование DesignInstance фактически позволяет лучше разделять задачи, чем делать сальто назад IsInDesignMode или создавать конструктор по умолчанию только для поддержки проектирования в вашей реальной модели представления - вы можете наследовать от своего типа модели представления или от общего типа интерфейса создайте простую «дизайнерскую» модель представления, и она полностью ограничена дизайнером. С DesignData вам даже не нужно этого делать: вы можете просто создать ложную модель представления декларативно в XAML.

Да, выполнение перечисленных выше действий сопряжено с небольшими первоначальными затратами, но в результате получается более четкое разделение, чем то, что вы получите, смешав данные проектирования с вашей реальной моделью представления. Я что-то упускаю? Почему смешиваемость до сих пор так важна?

1 Ответ

4 голосов
/ 01 сентября 2010

Если у вас есть данные макета для всего представления, то использование d: DataContext, d: DesignData и d: DesignInstance должно обеспечить смешиваемость.

Таким образом, ответ на ваш вопрос, короче говоря, не имеет значения, как вы используете представление во время выполнения (сначала просматривайте или модели просмотра сначала), вы все равно можете иметь смешиваемость. Если у вас есть некоторая логика или инициализация viewmodel в вашей версии времени выполнения, вы должны просто убедиться, что то же самое есть в вашем экземпляре времени разработки.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...