具有由DataSource属性组成的自定义字符串的DataSource DisplayMember



是否可以将ListBox绑定到List<A>的DataSource,同时将DisplayMember设置为由a的属性组成的自定义字符串,例如以下$"{A.b} {A.c}"

var list1 = new List<A>();
// populate list
MyListBox.DisplayMember = $"{A.b} {A.c}"; // not going to work
MyListBox.DataSource = list1;

我知道我可以使用匿名类型,但我想要ListBox。保留类型A的项目。我不想做以下事情,

var list2 = (from a in list1
select new {A = a, DisplayMember = $"{a.b} {a.c}"}).ToList();
MyListBox.DisplayMember = "DisplayMember";
MyListBox.DataSource = list2;

因为现在CCD_ 3是匿名的并且不能像CCD_。

那么,有办法做到这一点吗?

我想错了。现在解决了。也许这对一些人来说是显而易见的,但我将为子孙后代发布我的答案。

在第二个例子中使用匿名类型,只需将ValueMember设置为

var list2 = (from a in list1
select new {A = a, DisplayMember = $"{a.b} {a.c}"}).ToList();
MyListBox.DisplayMember = "DisplayMember";
MyListBox.ValueMember = "A";
MyListBox.DataSource = list2;
var list3 = MyListBox.Items.OfType<A>().ToList(); // works!

最新更新