Как сделать привязку View / ViewModel в приложениях MVVM, чтобы можно было использовать Expression Blend? - PullRequest
2 голосов
/ 19 июня 2009

Когда вы используете шаблон MVVM Visual Studio , тогда ваши ViewModels привязываются к DataContexts ваших представлений в App.xaml.cs примерно так:

MainView mainView = new MainView();
mainView.DataContext = new MainViewModel();
mainView.Show();

А если вы используете Библиотека составных приложений , то ваши View и ViewModel будут связаны друг с другом в вашем Bootstrapper / Container / ServerLocator и т. Д.

В любом случае, когда вы открываете эти проекты в Expression Blend и открываете файл View XAML, Expression blend не знает, к какому ViewModel принадлежит View , поскольку эта привязка выполняется в коде, как описано выше. экземпляры.

Вы, конечно, можете установить DataObjectProvider в своем XAML, чтобы Expression Blend знал, где получить свои данные для этого представления, но это нарушает MVVM и шаблон развязки, поскольку ваш вид теперь привязан к определенному ViewModel. Это как дизайнеры обычно работают с Expression Blend над проектами, которые представляют собой нечто большее, чем небольшая демонстрация?

Так что для тех из вас, кто использует шаблон MVVM и у кого есть дизайнеры, которые используют Expression Blend, как вы поддерживаете структуру привязки View / ViewModel так, чтобы Expression Blend могла знать, какой ViewModel принадлежит каким представлениям?

1 Ответ

2 голосов
/ 19 июня 2009

Blend загружает и выполняет код, даже если он не запускает приложение. Загрузите некоторый пример DataContext, если DesignerProperties.GetIsInDesignMode (...) в конструкторе представления или другом более подходящем методе.

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