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

ListBoxItem的ToString()返回前缀问题及列表转换优化咨询

解决ListBox项转字符串列表时的前缀问题

嘿,这个坑我之前踩过!你现在得到的System.Windows.Controls.ListBoxItem: item 1这类结果,是因为直接调用ListBoxItem.ToString()时,它默认的重写逻辑就是返回「控件类型名 + : + Content的ToString结果」。下面给你几个实用的解决办法:

方法一:直接获取Content属性(最直接)

如果你的ListBox里每个项都是简单的字符串内容,那直接取ListBoxItem.Content属性就可以得到纯文本内容,修改后的代码如下:

foreach (ListBoxItem li in MyListBox.Items) 
{
    MyList.Add(li.Content.ToString());
}

这个方法简单直接,适用于大多数基础场景。

方法二:从绑定数据源直接获取(更优,推荐WPF场景)

如果你的ListBox是通过数据绑定(比如MVVM模式)绑定到某个集合的,那完全不需要遍历UI控件,直接从数据源转换列表就行,这更符合WPF的设计思想,也避免了操作UI元素的潜在问题。
比如你绑定的是ObservableCollection<string>类型的集合:

// 假设你的数据源是名为MyDataSource的ObservableCollection<string>
var MyList = MyDataSource.ToList();

如果是自定义实体类的集合,只需要提取对应的显示属性即可:

var MyList = MyDataSource.Select(item => item.DisplayName).ToList();

这里的DisplayName是你实体类中用来显示的属性名,替换成你实际的属性就行。

方法三:处理复杂Content对象

如果ListBoxItem的Content是自定义控件或者复杂对象,你可以先将Content转换为对应的类型,再提取需要的内容:

foreach (ListBoxItem li in MyListBox.Items) 
{
    var customItem = li.Content as MyCustomClass;
    if (customItem != null)
    {
        MyList.Add(customItem.Title); // 提取自定义类中的显示属性
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:55:59