.net 将窗口绑定到父窗口的子集合
我在WPF中使用MVVM模型时遇到了一个问题。以下是我的物品: 视图.net 将窗口绑定到父窗口的子集合,.net,wpf,mvvm,.net,Wpf,Mvvm,我在WPF中使用MVVM模型时遇到了一个问题。以下是我的物品: 视图 主窗口(视图) (此视图的DataContext绑定到MainWindowViewModel) 项目视图窗口 (此的DataContext绑定ItemListViewModel) 查看模型 主窗口视图模型 (包括: 可观察收集项目) ItemListViewModel (包括: 可观察到的收集项目, ItemViewModel SelectedItem, 其他属性/命令) ItemViewWindow可通过主窗口上的菜
- 主窗口(视图) (此视图的DataContext绑定到MainWindowViewModel)
- 项目视图窗口 (此的DataContext绑定ItemListViewModel)
- 主窗口视图模型 (包括: 可观察收集项目)
- ItemListViewModel (包括: 可观察到的收集项目, ItemViewModel SelectedItem, 其他属性/命令)
class ItemListViewModel
{
public SomeCollectionType TheCollection { get; set; } // most likely you have INotifyPropertyChanged etc so probably more to it than get/set
}
然后在MainWindowViewModel中实例化ItemVM时设置它
public void OpenItemList()
{
var itemList = new ItemListViewModel();
itemList.TheCollection = CollectionFromThisVM;
// etc
}
或者
b:使用类似于EventAggregator
模式的方式发布包含ItemListViewModel要订阅的集合的消息
第一种方法似乎更简单我一直在做类似于(a)的事情,但我并不真的喜欢将数据/上下文更改为代码隐藏中的内容-我现在就用它。(b) 是一种选择,但如果可能的话,我想尽量避免。我会把这个开久一点。