我试图学习MVVM到目前为止一切顺利,我偶然发现了一个我不知道如何实现的情况。
我想要的: - 具有左侧导航和右侧详细信息窗格的视图..右侧详细信息将包含一个contentcontainer,用于保存我的用户控件以供左窗格选择的视图
我拥有的: - MainViewModel - 我在数据库中拥有的每个实体的ViewModel
我的问题: - 因为我的MAINVIEWMODEL中有一个ObservableCollection我的VIEWMODEL(根据我的应用程序模式示例)我是否为我的每个MODEL实体创建一个公共属性,它将用于我在UserControls中定义的数据绑定??
答案 0 :(得分:5)
您可以为要在右侧显示的所有ViewModel创建基本类型。(让我们将其称为 BaseContentViewModel )
然后你的左侧ListBox将绑定到ObservableCollection<BaseContentViewModel>
,ListBox的SelectedValue将绑定到Type BaseContentViewModel 的新 MainViewModel.SelectedContent 属性。
在右侧,你需要有一个ContentControl, SelectedContent 绑定到 ContentControl.Content
现在只需将资源XAML中的不同UserControl定义为DataTemplates(通常称为MVVM中的ViewToViewModelMapping)
答案 1 :(得分:2)
看看John Papa的PDC演讲“使用Microsoft Silverlight构建大规模应用程序的高级主题”。在其中,他演示了一种管理具有多个MVVM三元组的应用程序的方法。