集合对象的数据绑定
在集合对象的数据绑定中,
(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"> <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属性引用。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。