让我向您展示一个解决方案的简单问题,然后是一个没有解决方案的更强复杂问题。
1)想象一下,我有一个货架,它有一个产品清单。我想用Products显示数据网格。
解决方案:在View中,我可能会在datagrid中插入类似的代码,如下所示:“ItemSource = {Binding Products}”。然后在ViewModel中,我创建一个名为“Products”的ObservableCollection属性。 好。
2)我有 MANY 货架,哪一个有很多产品。我想在彼此之下显示许多数据网格。每个数据网格显示一个货架的产品列表。
现在,如何绑定 MANY 数据网格?它可以是3个数据网格。它可以是500个数据网格。 如何使用 MVVM ?
执行此操作感谢。我希望你理解我的问题。
答案 0 :(得分:4)
假设您的ViewModel上有一个名为Shelves的Shelf集合,您可以使用ItemsControl或ListBox(如果需要选择),并定义DataTemplate:
<ItemsControl ItemsSource="{Binding Path=Shelves}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<DataGrid ItemsSource="{Binding Path=Products}"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
答案 1 :(得分:0)
我认为常见的方法是创建两个视图模型
class Storage : ViewModelBase
{
ObservableCollection<Shelf> Shelves { get; private set; }
...........
}
class Shelf : ViewModelBase
{
ObservableCollection<Product> Products { get; private set; }
..........
}
然后,您只需使用ItemsControl
创建ItemsSource = "{Binding Shelves}"
并指定ItemsTemplate
属性,这样集合中的每个货架都会显示为datagrid。