【问题标题】:Multidimensional List Binding to Listbox多维列表绑定到列表框
【发布时间】:2012-11-13 16:45:06
【问题描述】:

我知道如何将列表绑定到列表框,但我使用以下代码创建了一个多维列表,但不知道如何将其绑定到列表框。

public class MultiDimDictList<K, T> : Dictionary<K, List<T>>
    {
        public void Add(K key, T addObject)
        {
            if (!ContainsKey(key)) Add(key, new List<T>());
            base[key].Add(addObject);
        }
    }

然后下面来利用这个类并将2个字符串添加到列表中:

var myDicList = new MultiDimDictList<string, string>();
        myDicList.Add("Title", "Data");
        myDicList.Add("Title2", "Data2");

基本上我要做的是将此数据绑定到仅显示标题的列表框,但是当单击按钮时,它会使用数据部分来完成该过程。

我不知道该去哪里,因为我一直在查看其他帖子,但没有找到与我正在尝试做的类似的事情。

感谢您的帮助。

【问题讨论】:

    标签: c# list data-binding listbox multidimensional-array


    【解决方案1】:

    Dictionary&lt;K,V&gt; 不是列表。您的情况下的标题是字典的键,并且没有排序。您可以通过Keys 属性访问它们,但必须在绑定之前对它们进行排序。将此属性添加到您的MultiDimDictList

    public List<string> Titles { get { return Keys.OrderBy(k => k).ToList(); } }
    

    并将列表框绑定到此属性。

    上面的例子假设键是字符串类型的。使用泛型类型参数K 时,您必须先转换为字符串(除非您想要K 的原因列表):

    public List<string> Titles {
        get {
            return Keys
                .Select(k => k.ToString())
                .OrderBy(s => s)
                .ToList(); 
        }
    }
    

    【讨论】:

    • 它的错误是:无法将列表 隐式转换为列表 我错过了什么?
    • 添加了一个考虑泛型类型参数的示例。
    猜你喜欢
    • 1970-01-01
    • 2011-03-08
    • 2023-03-27
    • 2012-02-24
    • 2011-08-28
    • 2012-10-21
    • 2011-07-10
    • 1970-01-01
    • 2016-04-23
    相关资源
    最近更新 更多