wpf如何绑定ListBox! 5
示例:
<!-- XAML -->
<StackPanel>
<ListBox Name="lstBox1" Height="300">
</ListBox>
<ListBox Name="lstBox2" Height="300">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding Path=Name}" Width="200"/>
<TextBlock Text="{Binding Path=Spacing}" Width="200" TextAlignment="Right"/>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</StackPanel>
// Loaded 事件代码
var fonts = Fonts.SystemFontFamilies
.Select(s => new
{
Name = s.Source,
Spacing = s.LineSpacing
});
lstBox1.ItemsSource = fonts;
lstBox2.ItemsSource = fonts;
示例中的数据源(fonts)是由 LINQ 生成的数据列表,支持 IEnumerable 接口
其中的每个元素为"匿名类型",具有2个属性:
Name - 字体名称 string
Spacing - 行距 double
然后设置 ListBox.ItemsSource 属性将数据绑定到 ListBox
在数据呈现的过程中
ListBox 将自动为列表 fonts 中的每个元素分配一个 ListBoxItem 对象
由于,ListBoxItem 的默认数据模板 (DataTemplate) 为 TextBlock
所以,在不指定数据模板的情况下,将显示元素的 ToString() 方法所返回的文本
如 listBox1 中所示
在 lstBox2 中,为了呈现元素的属性值,定义了数据模板 DataTemplate
并将模板中 TextBlock.Text 属性分别绑定到元素的2个属性上:
Text="{Binding Path=Name}"
Text="{Binding Path=Spacing}"
这样就实现了,列表元素 -> UI对象间的数据绑定
参考MSDN:数据绑定帮助主题
http://msdn.microsoft.com/zh-cn/library/vstudio/ms752039(v=vs.100).aspx