WP8使用Binding创建ListBox的子项目

转自:http://www.it165.net/pro/html/201311/7828.html

一般我们在开发Windows Phone 8 时,常常会接收网络上的数据来放进UI里,也就是说我们的数据数目是动态的,这时我们与其自己一项项建立UI,不如将这些不固定长度的数据透过Binding的方式放入ListBox中,如此一来可省去使用者处理数据上的麻烦。

本文章将引导您透过Binding的方式,将数据放进ListBox。

首先假设要建立的是学生的数据,以【姓名】和【座号】为例。

步骤一:

在MainPage.xmal中放置一个ListBox的控制向,并命名为【List_Students】

 

WP8使用Binding创建ListBox的子项目_第1张图片
 

步骤二:

在MainPage.xmal里的ListBox的子属性下建立Template,也就是样板,假设目前资料数目有5笔,ListBox就会根据Template自动创建五次来放资料的内容。

所以在Template中我们需要两个TextBlock来放置【姓名】和【座号】,Text的属性要放置【Binding XXX】,XXX是等会儿实作程序时会用到的,这边以Name和ID做示范。

 

view source print ?
01. <ListBox x:Name="List_Students">
02. <ListBox.ItemTemplate>
03. <DataTemplate>
04. <StackPanel Orientation="Horizontal">
05. <TextBlock Text="{Binding ID}" />
06. <TextBlock Text="{Binding Name}" />
07. </StackPanel>
08. </DataTemplate>
09. </ListBox.ItemTemplate>
10. </ListBox>

步骤三:

建立一个学生数据的Class 并透过【自动属性】建立该类别叫做【Student_Item】,其中包含【姓名】和【座号】

这边的属性名称要跟刚刚在Xaml上TextBlockk的Text属性相对应,也就是Name和ID。

 

view source print ?
1. class Student_Item
2. {
3. public string Name { getset; }//学生的姓名
4. public string ID{ getset; }//学生的座号
5. }

步骤四:

在主程序MainPage.xaml.cs里建立Student_Item的数组来放置学生的数据。

 

view source print ?
01. //宣告学生的数组
02. private List<Student_Item> Student_Items;
03. //当该页面被开启时
04. protected override void OnNavigatedTo(NavigationEventArgs e)
05. {
06. base.OnNavigatedTo(e);
07. AddStudentData();//建立假数据
08. }
09.  
10. //建立学生的假数据
11. private void AddStudentData() {
12. Student_Items = new List<Student_Item>(); //初始化Student_Items物件
13. //开始装假数据
14. Student_Items.Add(new Student_Item(){Name="王小明",ID="1"});
15. Student_Items.Add(new Student_Item() { Name = "王一明", ID = "1" });
16. Student_Items.Add(new Student_Item() { Name = "王二明", ID = "2" });
17. Student_Items.Add(new Student_Item() { Name = "王三明", ID = "3" });
18. Student_Items.Add(new Student_Item() { Name = "王四明", ID = "4" });
19. Student_Items.Add(new Student_Item() { Name = "王五明", ID = "5" });
20. Student_Items.Add(new Student_Item() { Name = "王六明", ID = "6" });
21. Student_Items.Add(new Student_Item() { Name = "王七明", ID = "7" });
22. //装完假资料
23. List_Students.ItemsSource = Student_Items;//指定ListBox的数据来源为Student_Items的数组
24. }

步骤五:

执行看看,完美运行,突然觉得世界很美好!!

 

WP8使用Binding创建ListBox的子项目_第2张图片
 

若日后在指定ItemsSource时发现ListBox没有同步更新,却还停留在旧数据,可以试试看以下两种方法

方法一:

先指定null再指定回来。

 

view source print ?
1. List_Students.ItemsSource = null;
2. List_Students.ItemsSource = Student_Items;

方法二:

方法一+更新UI

 

view source print ?
1. List_Students.ItemsSource = null;
2. List_Students.ItemsSource = Student_Items;
3. List_Students.UpdateLayout();

综合上述我们已透过Binding的方式,将数据放进ListBox啰!!

文章中的叙述如有观念不正确错误的部分,欢迎告知指正 谢谢

你可能感兴趣的:(WP8使用Binding创建ListBox的子项目)