0

カスタム コントロールに ObservableCollection を含む List> itemListList 型の List があります。

カスタム コントロールでこれらのリストを Static として公開しました。

以下は私のシナリオを説明するためのコードです:

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 をユーザーに伝えることができるが、そこからサブリストにアクセスできるようにすることです。

Enumeration のようなものです。私の質問は明確です。

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 に答える