如何在MVVM应用程序中进行View / ViewModel绑定,以便可以使用Expression Blend?

时间:2009-06-19 10:17:04

标签: mvvm binding expression-blend

当您使用 MVVM Visual Studio Template 时,您的ViewModel会绑定到App.xaml.cs中的Views的DataContexts,如下所示:

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

如果您使用复合应用程序库,那么您的Views和ViewModel将在Bootstrapper / Container / ServerLocator等中绑定在一起。

在任何情况下,当您在Expression Blend中打开这些项目并打开View XAML文件时, Expression blend不知道哪个ViewModel属于哪个View ,因为此绑定在代码中完成,如在以上情况。

您当然可以在XAML中设置 DataObjectProvider ,以便Expression Blend知道从哪个位置获取该视图的数据,但这会破坏MVVM和解耦模式,因为您的View现在已经硬连接到特定的ViewModel。 这就是设计师通常如何在不仅仅是一个演示的项目上使用Expression Blend?

因此,对于那些使用MVVM模式并且设计师使用Expression Blend的人,如何保持View / ViewModel绑定的结构,以便Expression Blend可以知道哪个ViewModel属于哪些视图?

1 个答案:

答案 0 :(得分:2)

Blend会加载并执行代码,即使它没有运行应用程序。如果DesignerProperties.GetIsInDesignMode(...)在视图构造函数或其他更合适的方法中加载一些示例DataContext。