具有主窗口和许多用户控件的MVVM场景

时间:2010-05-06 10:12:42

标签: wpf mvvm binding

我有一个主窗口和许多用户控件,我想显示/隐藏,具体取决于用户的选择。例如,有一个名为Customer的用户控件应该从数据库或用户控件获取所有客户,该用户控件是注册服务的表单。等等。每个控件都有viewmodel,它应该从数据库中获取数据。问题是我不知道以正确的方式设置数据上下文。为简单起见,我的模型是一个ado.net实体数据模型。

我试过了:

<UserControl.DataContext>
<vm:CustomerViewModel/>
</UserControl.DataContext>

我将字段绑定到模型字段但没有数据可见。在我使用MainWindowViewModel中的方法并将viewmodel设置为App.xaml.cs中的视图并调用方法之前:

Views.MainWindow newMainV = new Views.MainWindow();
ViewModels.MainVM mainVM = new ViewModels.MainVM();
mainVM.LoadCustomers();
newMainV.DataContext = mainVM;
newMainV.Show();

但是我认为主窗口shoudl有自己的viewmodel,只能处理命令,每个用户控件都应该有自己的viewmodel来获取所需的数据。

我的做法出了什么问题?

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

原则上,以您所描述的方式在DataContext上设置UserControl并没有错。所以我怀疑你的绑定设置方式,或视图模型的构造函数是如何工作的。您应该在输出窗口中查找绑定错误并在构造函数中放置断点,以查看实例化UserControl时实际发生的情况。

答案 1 :(得分:0)

您可以查看 WPF Application Framework (WAF) 的BookLibrary示例应用程序。

此MVVM示例应用程序也使用Entity Framework数据模型,它由各种视图(UserControls)组成。