无法在我的列表框中看到项目的名称,WPF,C#

Unable to see the name of items in my listbox, WPF, C#

我试图从一个 observablecollection 中获取数据到我的列表框中,但我没有显示项目的名称,而是 Namespace.ItemClass(在我的例子中,Retail_Items.RetailItem)。我附上了一张图片。我哪里可能错了? enter image description here

如果您想显示 class 中的多个字段,您应该考虑使用 DataTemplate,或者可能使用列表框上的 DisplayMemberPath 属性 来引用相关字段。

将列表框的 DisplayMember 属性 设置为“名称”(如果要显示名称 属性)。

例如-

listBox.DisplayMember = "Name";

ListBoxItem 默认公开绑定到 ItemsSource 的值。
而你大概绑定了一个集合,形式是List <RetailItem>,所以打印出来的是Namespace

和其他人的回答一样,如果绑定值是RetailItem这样的对象形式,DisplayMemberPath可以指定一个具体的属性值作为输出名称。 这是因为如果内部存在 DisplayMemberPath,它会在 ListBoxItem 中动态创建 Binding

其实在微软GitHub.

上发布的.Net Framework的开源可以直接看到结构

并且我已经为您 GITHub 分发了使用 ListBox/ListBoxItem 的样式模板和 MVVM 结构的示例源代码,希望对您有所帮助。

Sample Source