我是MVVM的新手,我跟着josh smith article,我正在努力开发我的第一次尝试 . 在我的例子中,我有一个主窗口,它有一个主视图模型:
var vm = new MainVM();
MainWindow window = new MainWindow();
window.DataContext = vm;
我有两个viewmodels ItemSuppliersViewModel , SuppliersViewModel 绑定到两个视图 ItemSuppliers , SuppliersView 在主窗口 resourcedictionary 中使用 datatemplate ,如下所示:
在主窗口中,我有一个列表框,显示Binded to:
AllItems 是主视图模型公开的公共属性:
public IList AllItems { get { return (IList)_itemsRepository.FindAll(DetachedCriteria.For()); } }
当用户从列表框中选择一个项目时,显示与该项目相关的一些数据的列表,由 ItemSuppliers View模型和 ItemSuppliersView 表示,并使用 itemscontrol 显示到网格中:
ItemSuppliersVM 在主视图模型中公开如下:
ItemSuppliersViewModel itemSuppliersVM;
public ItemSuppliersViewModel ItemSuppliersVM
{
get
{
return _itemSuppliersVM;
}
set
{
_itemSuppliersVM = value;
OnPropertyChanged("ItemSuppliersVM");
}
}
以下是绑定到列表框所选项目的selecteditem属性:
public Item SelectedItem
{
get
{
return _selectedItem;
}
set
{
_selectedItem = value;
OnPropertyChanged("SelectedItem");
ShowItemSuppliers();
}
}
创建itemsuppliers视图模型的 showItemSuppliers :
void ShowItemSuppliers()
{
_itemSuppliersVM = new ItemSuppliersViewModel(_itemsRepository, _selectedItem, new DateTime(2011, 03, 01), new DateTime(2011, 03, 30));
}
问题是当选择列表框中的任何项目时没有发生任何事情,但是 itemsrepository 已经过测试并且工作正常,当我的断点所有绑定都正常工作并且它遍历 selecteditem 属性然后是 showitemsuppliers() 方法 .
I think the problem is in this method, so what's wrong and is this method is the right way to instantiate the ItemSuppliersViewModel in the mainwindow view model?