Я новичок в MVVM, я следовал статье Джоша Смита , и я изо всех сил пытаюсь разработать свою первую попытку.В моем случае у меня есть главное окно с моделью основного вида:
var vm = new MainVM();
MainWindow window = new MainWindow();
window.DataContext = vm;
У меня есть две модели представления ItemSuppliersViewModel
, SuppliersViewModel
, связанные с двумя представлениями ItemSuppliers
, SuppliersView
с использованием datatemplate
в главном окне resourcedictionary
следующим образом:
<DataTemplate DataType="{x:Type VM:ItemSuppliersViewModel}">
<VV:ItemSuppliersView/>
</DataTemplate>
<DataTemplate DataType="{x:Type VM:SuppliersViewModel}">
<VV:SuppliersView/>
</DataTemplate>
В главном окне у меня есть список, отображающий список элементов, связанных:
<ListBox x:Name="ItemsListBox" ItemsSource="{Binding AllItems}" SelectedItem="{Binding SelectedItem}" DisplayMemberPath="Item_Name" />
AllItems
является общедоступнымсвойство, предоставляемое моделью основного вида:
public IList<Item> AllItems { get { return (IList<Item>)_itemsRepository.FindAll(DetachedCriteria.For<Item>()); } }
Когда пользователь выбирает элемент из списка, отображается список некоторых данных, связанных с этим элементом, представленных ItemSuppliers
Модель просмотра и ItemSuppliersView
и отображается в сетке с помощью itemscontrol
:
<Grid Margin="246,132,93,94">
<ItemsControl ItemsSource="{Binding ItemSuppliersVM}" Margin="4"/>
</Grid>
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();
}
}
showItemSuppliers
, который создает модель представления itemsuppliers:
void ShowItemSuppliers()
{
_itemSuppliersVM = new ItemSuppliersViewModel(_itemsRepository, _selectedItem, new DateTime(2011, 03, 01), new DateTime(2011, 03, 30));
}
Проблема заключается в том, что при выборе любого элемента в окне списка ничего не происходило,Тем не менее, itemsrepository
проверен и работает нормально, когда я, кроме точки разрываt все привязки работают, и он проходит через свойство selecteditem
, а затем метод showitemsuppliers()
.
Я думаю, что проблема в этом методе, так что не так, и этот метод правильныйспособ создания ItemSuppliersViewModel
в модели представления основного окна?