转自:http://www.it165.net/pro/html/201311/7828.html
一般我们在开发Windows Phone 8 时,常常会接收网络上的数据来放进UI里,也就是说我们的数据数目是动态的,这时我们与其自己一项项建立UI,不如将这些不固定长度的数据透过Binding的方式放入ListBox中,如此一来可省去使用者处理数据上的麻烦。
本文章将引导您透过Binding的方式,将数据放进ListBox。
首先假设要建立的是学生的数据,以【姓名】和【座号】为例。
步骤一:
在MainPage.xmal中放置一个ListBox的控制向,并命名为【List_Students】
步骤二:
在MainPage.xmal里的ListBox的子属性下建立Template,也就是样板,假设目前资料数目有5笔,ListBox就会根据Template自动创建五次来放资料的内容。
所以在Template中我们需要两个TextBlock来放置【姓名】和【座号】,Text的属性要放置【Binding XXX】,XXX是等会儿实作程序时会用到的,这边以Name和ID做示范。
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。
1.
class
Student_Item
2.
{
3.
public
string
Name {
get
;
set
; }
//学生的姓名
4.
public
string
ID{
get
;
set
; }
//学生的座号
5.
}
步骤四:
在主程序MainPage.xaml.cs里建立Student_Item的数组来放置学生的数据。
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.
}
步骤五:
执行看看,完美运行,突然觉得世界很美好!!
若日后在指定ItemsSource时发现ListBox没有同步更新,却还停留在旧数据,可以试试看以下两种方法
方法一:
先指定null再指定回来。
1.
List_Students.ItemsSource =
null
;
2.
List_Students.ItemsSource = Student_Items;
方法二:
方法一+更新UI
1.
List_Students.ItemsSource =
null
;
2.
List_Students.ItemsSource = Student_Items;
3.
List_Students.UpdateLayout();
综合上述我们已透过Binding的方式,将数据放进ListBox啰!!
文章中的叙述如有观念不正确错误的部分,欢迎告知指正 谢谢