C# 在多列列表框C中分配多个DisplayMembers#
我有一个列表框,它具有C# 在多列列表框C中分配多个DisplayMembers#,c#,.net,listbox,datasource,C#,.net,Listbox,Datasource,我有一个列表框,它具有IEnumerableList作为DataSource。 PhoneNumber类有两个属性编号和类型。 我想在单独的列中显示数字和类型,因此我将MultiColumn属性设置为true,但现在如何将DisplayMembers分配给各个列? 既然我们讨论的是ListBox,那么如何更改ListBox中各行的背景色呢?多列将项目放入所需的列中,以避免垂直滚动。它不会将单个项跨到多个列中。当然,它不支持多个DisplayMembers。改为使用或(更好)-两个控件都有列,并允
IEnumerable
List
作为DataSource
。
PhoneNumber类有两个属性编号和类型。
我想在单独的列中显示数字和类型,因此我将MultiColumn
属性设置为true,但现在如何将DisplayMembers
分配给各个列?
既然我们讨论的是ListBox,那么如何更改ListBox中各行的背景色呢?多列将项目放入所需的列中,以避免垂直滚动。它不会将单个项跨到多个列中。当然,它不支持多个DisplayMembers
。改为使用或(更好)-两个控件都有列,并允许将不同的对象属性映射到这些列。另外,为正在使用的事件处理程序中的各个行设置背景颜色也非常容易。这是WPF
作为一种方法,我放弃了多列。我添加了第二个列表框,并将其放置在第一个列表框的旁边,使它们看起来像一个对象。我将DataSource指定为另一个列表框,但将DisplayMember指定为Type。在运行时,两个对象看起来像是一个,选择总是同时高亮显示两个列表框,因为它们具有相同的数据源。此外,我还有一个很好的视觉效果,因为第一个列表框中的选择会在单击时发生变化,并复制到另一个列表框中。为什么不使用GridView
或ListView
?这些都是为支持多列而构建的,ListBox
是为单个列而构建的。我相信OP谈论的是WinForms,因为WPF ListBox没有DisplayMember属性
<ListView ItemsSource="{Binding Source=ListPhoneNumber">
<ListView.View>
<GridView>
<GridViewColumn Header="Number"
DisplayMemberBinding="{Binding Path=Number}" />
<GridViewColumn Header="Type"
DisplayMemberBinding="{Binding Path=Type}" />
</GridView>
</ListView.View>
</ListView>