无法在我的列表框中看到项目的名称,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 结构的示例源代码,希望对您有所帮助。
我试图从一个 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 结构的示例源代码,希望对您有所帮助。