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

StackOverflow https://stackoverflow.com/questions/1017276

  •  06-07-2019
  •  | 
  •  

Вопрос

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

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

А если вы используете Композитную библиотеку приложений , тогда ваши Views и 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 принадлежит каким представлениям?

Это было полезно?

Решение

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top