0

我有一个 List> itemListList 类型的列表,它在我的自定义控件中包含 ObservableCollection。

我在我的自定义控件中将这些列表公开为静态。

下面是说明我的场景的代码:

public static List<ObservableCollection<IItem>> itemListList;

    // 3 Panel Lists of type ObservableCollection

    public static ObservableCollection<IItem> iItemsList0;
    public static ObservableCollection<IItem> iItemsList1;
    public static ObservableCollection<IItem> iItemsList2;

在客户端,这些项目将被添加到这些列表中:

            UI.itemListList = new List<ObservableCollection<IItem>>();

            // Adding Items to the List

        /*First Collection */

            UI.iItemsList0 = new ObservableCollection<IItem>();

            UI.iItemsList0.Add(new UC());
            UI.iItemsList0.Add(new UC());
            UI.iItemsList0.Add(new UC());


            /*Second Collections */
            UI.iItemsList1 = new ObservableCollection<IItem>();

            UI.iItemsList1.Add(new UC());
            UI.iItemsList1.Add(new UC());
            UI.iItemsList1.Add(new UC());
            UI.iItemsList1.Add(new UC());

            /*Third Collection */
            UI.iItemsList2 = new ObservableCollection<IItem>();

            UI.iItemsList2.Add(new UC());
            UI.iItemsList2.Add(new UC());
            UI.iItemsList2.Add(new UC());
            UI.iItemsList2.Add(new UC());

在控制端,

我会将这些子列表添加到 List> 类型中。

    UI.itemListList.Add(iItemsList0);
    UI.itemListList.Add(iItemsList1);
    UI.itemListList.Add(iItemsList2);

这很好用。项目被添加到列表中,但如果您是用户,您将不知道哪些是暴露的子列表。我想修改此代码的方式是我可以告诉用户 MainList itemListList 被公开,但从那里他应该能够访问子列表。

像枚举这样的东西。我的问题很清楚。

4

1 回答 1

0

您可以使用一个Dictionary集合,键是枚举,值是可观察的集合:

public enum ListType
{
    MyFirstList,
    MySecondList
}

public static Dictionary<ListType, ObservableCollection<IItem>> Lists;

// Instantiate and populate Lists


// Get an observable collection by key
var observableCollection = UI.Lists[ListType.MyFirstList];

不过,这似乎不是一个特别好的设计,因此您可能需要重新考虑您要解决的问题。

于 2012-06-20T08:50:58.103 回答