1,和ComboBox一样,ListBox也可以通过ItemsSource和DisplayMemberPath来绑定并显示所要显示的内容。
注意,DisplayMemberPath只能显示数据源中的一个属性。若要想同时显示多个属性到列表项中,要用到ItemTemplate属性,对列表进行格式化,在ItemTemplate里还要用到DataTemplate元素来描述数据对象的可视化结构,即绑定到UI上的数据最终将会以什么形式显示。
eg:
后台数据模板:
/// <summary>
/// 记录点、线设施的属性信息
/// </summary>
public class PropertyModel
{
/// <summary>
/// 字段
/// </summary>
public string zhiduan { get; set; }
///<summary>
/// 属性
/// </summary>
public string shuxing { get; set; }
}
绑定到ListBox:
MyListBoxToShowProperty.ItemsSource=MyObservableCollectionOfPropertyModel;//绑定数据源
前台ListBox:
<Grid x:Name="LayoutRoot"Background="Transparent">
<ScrollViewerVerticalScrollBarVisibility="Auto"HorizontalScrollBarVisibility="Auto">
<Border Style="{StaticResourceCommonBorder}">
<ListBoxx:Name="MyListBoxToShowProperty" Margin="10">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanelOrientation="Horizontal">
<TextBlockText="{Binding zhiduan}" Margin="5,2,0,0"/>
<TextBlockText="{Binding shuxing}" Margin="5,2,0,0" Foreground="OrangeRed"/>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</Border>
</ScrollViewer>
</Grid>
MyListBoxToShowProperty.ItemsSource=MyObservableCollectionOfPropertyModel;//绑定数据源MyListBoxToShowProperty.ItemsSource=MyObservableCollectionOfPropertyModel;//绑定数据源
2:在ListBox中,默认列表项每一行显示一项,可以通过ItemsPanel属性修改列表项的显示方式
<ListBox>
<ListBox.ItemsPanel>
<ItemsPanelTemplate >
<StackPanel Orientation="Horizontal"/>
</ItemsPanelTemplate>
</ListBox.ItemsPanel>
<ListBoxItem Content="选项1" Width="50" />
<ListBoxItem Content="选项2" Width="50" />
<ListBoxItem Content="选项3" Width="50" />
<ListBoxItem Content="选项4" Width="50" />
</ListBox>
3:使用SL自带的DataGrid来显示一条记录的话是一条长长的UI,故可以使用ListBox来显示一条记录,ListBox的每一行显示两项:字段和属性,这样做出的UI较之前者视觉上更好。