【发布时间】:2011-10-11 04:39:39
【问题描述】:
我正在使用 C# 编写我的第一个 MVVM 项目,这是一个非 MVVM 项目的转换,并且在每个角落都有问题。虽然我无法分享我使用的确切数据,但我想出了一个类似的方案来帮助解决我的问题。
这是数据:
<Stock>
<Container Store="Store1"
Aisle="1"
Shelf="2"
Name="Box1">
<Item Name="GreenBeans"/>
<Item Name="Carrots"/>
...
</Container>
<Container Store="Store3"
Aisle="4"
Shelf="6"
Name="Box2">
<Item Name="Pillow"/>
<Item Name="Blanket"/>
...
</Container>
...
</Stock>
可能会有数千个容器,每个容器包含 10-15 件物品。任何两个定位器(Store/Aisle/Shelf)可能是等效的,但不是所有三个(即一个容器可以存在于某个位置 Store -> Aisle -> Shelf)。
我目前的型号如下。这些不是完整的模型,但这让我知道我要去哪里。有可能,但不太可能,我需要知道特定商店或特定通道上的所有<Item\>。话虽如此,我必须拥有这些课程吗?
public class Store
{
public String StoreName;
public Aisles StoreAisles;
}
public class Stores
{
ObservableCollection<Store>
}
public class Aisle
{
public int AisleNumber;
public Shelfs AisleShelfs;
}
public class Aisles
{
ObservableCollection<Aisle>
}
public class Shelf
{
public int ShelfNumber;
public Items ShelfItems;
}
public class Shelfs
{
ObservableCollection<Shelf>
}
public class Item
{
public string Name;
}
public class Items
{
ObservableCollection<Item>
}
在主/从场景中将有三个组合框(商店、过道和货架)。将查询数据以告诉我哪些商店可用,商店的哪些过道正在使用,然后每个过道上正在使用哪些货架。一旦建立了<Container\>,那么该容器中的<Item(s)\> 将绑定到用户控件。
此时,我不确定如何处理数据。在走 MVVM 路线之前,我从每个 SelectedItem 中收集字符串并将其用作 XElement Linq 查询的输入。这将返回一个<Container\>,然后我将在其中查询<Item(s)\>。
当我对任何组合框进行更改时,我想利用绑定并避免所有查询。如何使用绑定将选定的<Container\> 返回到视图模型中的属性?
欢迎所有帮助和建议!
【问题讨论】:
标签: c# xml linq mvvm master-detail