列表框绑定字典<字符串,对象>



是否有将字典绑定到ListBox的方法?例如:我有这个班:

   class Person
    {
        private string _firstName;
        private string _lastName;
        private int _age;
        public Person(string firstName, string lastName, int age)
        {
            this._firstName = firstName;
            this._lastName = lastName;
            this._age = age;
        }
        public string FirstName
        {
            get { return _firstName; }
            set { this._firstName = value; }
        }
        public string LastName
        {
            get { return _lastName; }
            set { this._lastName = value; }
        }
        public int Age
        {
            get { return _age; }
            set { this._age = value; }
        }
    }

我把它作为我字典的价值:

private Dictionary<string, Person> _persons = new Dictionary<string, Person>();

我想把它绑定到listBox。。。但我需要选择要绑定的项目。。。例如:我想绑定Person,那么所有Person only都会出现在listBox的DisplayMember中。。。

我试着回答:stackoverflow.com/questions/85495/datagridview-bound-to-a-dictionary of Chris但列表框perItem上显示的输出类似于:

{ Key = key, Value = ObjectValue }

问题:有其他方法吗?或者如何修复这个问题,至少编辑列表框的项目?

更新:我刚才看到这个答案:stackoverflow.com/questions/1506987/how-to-bind-dictionary-to-listbox-in-winformations

它似乎起作用了!但我现在的问题是,如果我想显示的数据要在listBox.DisplayMember上显示什么

没有办法在winforms中的列表框的DisplayMember中指定类似"Person.FirstName"的内容。

您可以重写PersonToString方法,或者与其绑定字典,不如绑定List<Person>。。。

或者有一个只用于绑定的类和绑定List<CustomPerson>

public class CustomPerson
{
    public string Key { get; set; }
    public Person Person { get; set; }
    public string DisplayValue
    {
        get { return Person.FirstName; }
    }
}

然后将DisplayMember设置为DisplayValue

最新更新