你们中的任何一个 Mvvm Light Devotes 如何处理以下情况。我有几个使用自己的“子”视图模型实例的“主”视图模型。IE
Child ViewModel - "OrderLineItemListViewModel" 一个视图模型,用于订单中的行项目列表。
Parent ViewModel - "OrderDetailViewModel" 订单的视图模型。Parent VIewModel - "OrderChargeViewModel" 用于收取订单费用的视图模型。
两个父 ViewModel 都需要有一个 OrderLineItem 列表,并且两者都可以同时打开。目前,我已设置父 ViewModel 包含子 ViewModel 类型的属性,然后可以引用它。
public class ChildViewModel
{
public ChildViewModel()
{
Items = new ObservableCollection<ListItemViewModel>
{
new ListItemViewModel("One"),
new ListItemViewMOdel("Two")
}
}
public ObservableCollection<ListItemViewModel> Items {get; private set;}
}
public class ParentViewModel
{
public ParentViewModel()
{
ChildViewModel = new ChildViewModel();
}
public ChildViewModel ChildViewModel {get; set;}
}
<Window>
<DataGrid ItemsSource={Binding ChildViewModel.Items} />
</Window>
现在,我觉得应该有一种方法可以使用 ViewModelLocator 和 Messaging 来做到这一点,但是我还没有找到一个干净的方法来做到这一点。我知道如何使用 ViewModelLocator 创建 ViewModel 的非单例实例,所以这很好。但是,我不知道如何让父 ViewModel 响应子 ViewModel 消息并知道消息是否来自“它的”子 ViewModel,因此应该采取行动。
任何人都对如何处理这个问题有任何建议,或者我应该继续按照我的方式去做吗?让我思考的最大部分是,现在,我有选择地使用 ViewModelLocator,但不确定最终是否会直观。