绑定实体对象到ListBox与多个字段的DisplayMember



我使用实体框架6从数据库建模客户端列表。我成功地将集合绑定到一个列表框。我无法弄清楚如何做的是使用多个字段从对象绑定到Windows窗体ListBox的DisplayMember属性。

This works…

myLsiTBox.DataSource = context.Clients.ToList();
myLsiTBox.DisplayMember = "CompanyName";
myLsiTBox.ValueMember = "id";

This failed…

myLsiTBox.DataSource = context.Clients.ToList();
myLsiTBox.DisplayMember = "CompanyName" + "-" + "LastName" + " - " + "FirstName";
myLsiTBox.ValueMember = "id";

如何在ListBox中显示多个字段的内容?

如果这是您的客户:

public class Client
{
    public string CompanyName { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
}

你可以创建一个ClientViewModel,然后将列表框数据源绑定到ClientViewModel列表,并将DisplayMember设置为"FullDetails"。

public class ClientViewModel
{
    public string CompanyName { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string FullDetails { get { return string.Format("{0}-{1} - {2}", this.CompanyName, this.LastName, this.FirstName)} }
    public ClientViewModel(Client c)
    {
        this.CompanyName = c.CompanyName;
        this.FirstName = c.FirstName;
        this.LastName = c.LastName;
    }
}

. .或者如果可以的话,直接将FullDetails属性添加到原来的Client类中。

最新更新