0

让我展示一个有解决方案的简单问题,然后展示一个没有解决方案的更复杂的问题。

1)想象我有一个货架,里面有一个产品列表。我想显示带有产品的数据网格。

解决方案:在 View 中,我可能会在 datagrid 中插入类似的代码,如下所示:“ItemSource = {Binding Products}”。然后在 ViewModel 中,我创建了一个名为“Products”的 ObservableCollection 属性。好的。

2)我有很多货架,哪一个有很多产品。我想在彼此下方显示许多数据网格。每个数据网格显示一个货架的产品列表。

现在,如何绑定到许多数据网格?它可以是 3 个数据网格。它可以是 500 个数据网格。如何使用MVVM做到这一点?

谢谢。我希望你理解我的问题。

4

2 回答 2

4

假设您的 ViewModel 上有一个名为 Shelves 的 Shelf 集合,您可以使用 ItemsControl,如果需要选择,则可以使用 ListBox,并定义一个 DataTemplate:

<ItemsControl ItemsSource="{Binding Path=Shelves}">
        <ItemsControl.ItemTemplate>
            <DataTemplate>
                <DataGrid ItemsSource="{Binding Path=Products}"/>
            </DataTemplate>
        </ItemsControl.ItemTemplate>
    </ItemsControl>
于 2013-06-19T00:15:24.903 回答
0

我认为常见的方法是创建两个视图模型

class Storage : ViewModelBase
{
     ObservableCollection<Shelf> Shelves { get; private set; }

     ...........
}


class Shelf : ViewModelBase
{
     ObservableCollection<Product> Products { get; private set; }

     ..........
}

然后您可以简单地创建一个ItemsControlwithItemsSource = "{Binding Shelves}"并指定ItemsTemplate属性,以便集合中的每个架子都显示为数据网格。

于 2013-06-19T00:21:42.013 回答