You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#技术问题:如何在ListBox中按名称显示对象并完整存储

解决ListBox存完整对象同时显示指定属性的问题

方案1:重写Employee类的ToString方法

直接在Employee类里重写ToString方法,返回Name属性。这样把Employee对象添加到ListBox时,列表会自动用ToString的返回值作为显示内容,而项本身依然是完整的Employee对象,双击事件可以正常获取对象。

修改后的Employee类代码:

class Employee
{
    public string Name;
    public string Position;
    public DateTime BirthDate;
    public DateTime StartDate;
    public decimal Wage;

    public Employee(string name, string position, DateTime birthDate, DateTime startDate, decimal wage)
    {
        Name = name;
        Position = position;
        BirthDate = birthDate;
        StartDate = startDate;
        Wage = wage;
    }

    // 重写ToString,返回Name作为显示文本
    public override string ToString()
    {
        return Name;
    }
}

按钮点击事件可以简化(无需临时List):

private void btnAdd_Click(object sender, RoutedEventArgs e)
{
    var name = txtName.Text;
    var position = txtPosition.Text;
    DateTime birthDate = dpBirthDate.Date.DateTime;
    DateTime startDate = dpStartDate.Date.DateTime;
    var wageValue = txtWage.Text;
    decimal wage = Decimal.Parse(wageValue);
    
    // 直接创建对象并添加到ListBox
    lbEmployee.Items.Add(new Employee(name, position, birthDate, startDate, wage));
}

方案2:设置ListBox的DisplayMemberPath属性

无需修改Employee类,直接在XAML中给ListBox指定DisplayMemberPath为"Name",列表会自动绑定显示每个项的Name属性,项本身依然是完整的Employee对象。

XAML示例:

<ListBox x:Name="lbEmployee" DisplayMemberPath="Name" DoubleTapped="lbEmployee_DoubleTapped" />

后台代码保持原添加对象的逻辑即可,双击事件不受影响。

方案3:使用数据模板(适配复杂显示需求)

如果后续需要显示多个属性(比如同时展示Name和Position),可以用数据模板自定义列表项的显示样式,同样不影响项的对象类型。

XAML示例:

<ListBox x:Name="lbEmployee" DoubleTapped="lbEmployee_DoubleTapped">
    <ListBox.ItemTemplate>
        <DataTemplate>
            <!-- 自定义显示内容,这里仅展示Name,可扩展添加其他属性 -->
            <TextBlock Text="{Binding Name}" />
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

后台代码直接添加Employee对象即可,双击事件正常工作。

内容的提问来源于stack exchange,提问作者BAPTZ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 23:15:44