【发布时间】:2009-06-19 10:17:04
【问题描述】:
当您使用 MVVM Visual Studio Template 时,您的 ViewModel 会绑定到 App.xaml.cs 中的 View 的 DataContext,如下所示:
MainView mainView = new MainView();
mainView.DataContext = new MainViewModel();
mainView.Show();
如果您使用复合应用程序库,那么您的视图和视图模型会在您的引导程序/容器/服务器定位器等中绑定在一起。
无论如何,当您在 Expression Blend 中打开这些项目并打开一个 View XAML 文件时,Expression blend 不知道哪个 ViewModel 属于哪个 View,因为此绑定是在代码中完成的,如以上实例。
您当然可以在 XAML 中设置 DataObjectProvider,这样 Expression Blend 就知道从哪里获取该视图的数据,但这会破坏 MVVM 和解耦模式,因为您的视图现在已硬连接到特定的视图模型。 这就是设计师通常在不仅仅是一个小演示的项目中使用 Expression Blend 的方式吗?
那么对于你们这些使用 MVVM 模式并且有使用 Expression Blend 的设计师的人,你们如何保持 View/ViewModel 绑定的结构化,以便 Expression Blend 可以知道哪个 ViewModel 属于哪个 View?
【问题讨论】:
标签: mvvm binding expression-blend