集合对象的数据绑定(1)
集合对象的数据绑定
在集合对象的数据绑定中,
(1) 绑定源可以是任意实现了枚举接口的集合类对象
(2) 而绑定目标一般是ItemControl类型的UI元素。
在目前的Windows Phone7中,受支持的ItemControl控件只有一个ListBox。
当然,也可以直接使用ItemControl控件也是可以的。
1、 显示单列数据
原理:ItemControl的两个属性
ItemsSource
指示绑定源,提供要显示的集合数据,为一个可枚举对象。注意:其绑定结果会受当前数据上下文有关(即上级元素的DataContext属性)。
DisplayMemberPath
指示要绑定的属性名称或路径。默认为空字符串,对应绑定源中元素的ToString()值。
(1) 附带Employee.cs代码
public class Employee
{
public int Number { get; set; }
public String Name { get; set; }
public String Age { get; set; }
public int BirthYear { get; set; }
}
(2) 附带Department.cs代码
public class Department:Employee
{
public String DepName { get; set; }//部门名称
public ObservableCollection<Employee> employees { get; set; }//员工列表
}
(3) 在C#代码中创建一个部门列表
public MainPage()
{
InitializeComponent();
ObservableCollection<Department> departments = new ObservableCollection<Department>
{
new Department{DepName="技术部"},
new Department{DepName="商务部"}
};
lbDepartment.ItemsSource = departments;
}
(4) XAML代码中
<ListBox Height="257" Name="listBox1" VerticalAlignment="Top">
<ItemsControl Name="lbDepartment" DisplayMemberPath="DepName" ></ItemsControl>
</ListBox>
实现效果就是
2、 使用自定义数据模板定制样式
简单的单列数据绑定显然无法满足正常的开发需求。
(1) XAML代码:
<StackPanel Height="50" HorizontalAlignment="Center" Name="stackPanel1" Width="480" VerticalAlignment="Top" Orientation="Horizontal">
<TextBlock Name="textBlock1" Text="工号" VerticalAlignment="Top" Width="120" />
<TextBlock Name="textBlock3" Text="性别" VerticalAlignment="Top" Width="120" />
<ListBox.ItemTemplate>
<StackPanel >
<TextBlock Text="{Binding Number}" />
<TextBlock Text="{Binding Name}" />
<TextBlock Text="{Binding Age}" />
<TextBlock Text="{Binding BirthYear}" />
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
(2) XAML代码
public ZiDingYi()
{ InitializeComponent();
ObservableCollection<Employee> employees=new ObservableCollection<Employee>
{
new Employee{Number=2000,Name="张三",Age=10},
new Employee{Number=2001,Name="李四",Age=11},
new Employee{Number=2002,Name="yz",Age=12}
};
listEmployees.DataContext = employees;
}
效果图:
注意:此处使用模板的方式是直接嵌套在ListBox中,但在很多情况下为了方便复用通常会将数据模板保存在资源字典中,然后通过ListBox的ItemTemplate属性引用。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。