十二、数据绑定——listview

摘要:
--ItemsSource的值就等于DataContext的值--˃˂!

第一种

方法一

第一步:在XAML文件中

<ListView x:Name="lv1" HorizontalAlignment="Left" Margin="102,240,0,0" VerticalAlignment="Top" RenderTransformOrigin="0.498,-1.5">
<ListView.ItemTemplate>
<DataTemplate>
<!-- DataTemplate标签下只能有一个元素 -->
<StackPanel Orientation="Horizontal">
<TextBox Text="{Binding Name}"></TextBox>
<TextBlock Text="{Binding Age}"></TextBlock>
</StackPanel>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>

第二步:在.cs文件中

protected override void OnNavigatedTo(NavigationEventArgs e)

{//首次进入此页面,此时可以加载数据

if (e.NavigationMode == NavigationMode.New)

{

//Person就是上一篇中定义的

List<Person> list = new List<Person>();

list.Add(new Person { Name = "aaaaaaaaaaaaa", Age = 23 });

list.Add(new Person { Name = "bbbbbbbbbbb", Age = 24 });

list.Add(new Person { Name = "ccccccccccccc", Age = 33 });

lv1.ItemsSource = list; //ItemsSource为界面上显示的数据源

}

}

运行结果:

十二、数据绑定——listview第1张

方法二

第一步:在XAML文件

<!--ItemsSource的值就等于DataContext的值 -->

<ListView x:Name="lv1"ItemsSource="{Binding}" HorizontalAlignment="Left" Margin="102,240,0,0" VerticalAlignment="Top" RenderTransformOrigin="0.498,-1.5">

<ListView.ItemTemplate>

<DataTemplate>

<!-- DataTemplate标签下只能有一个元素 -->

<StackPanel Orientation="Horizontal">

<TextBox Text="{Binding Name}"></TextBox>

<TextBlock Text="{Binding Age}"></TextBlock>

</StackPanel>

</DataTemplate>

</ListView.ItemTemplate>

</ListView>

第二步:在.cs文件中

protected override void OnNavigatedTo(NavigationEventArgs e)

{//首次进入此页面,此时可以加载数据

if (e.NavigationMode == NavigationMode.New)

{

//Person就是上一篇中定义的

List<Person> list = new List<Person>();

list.Add(new Person { Name = "aaaaaaaaaaaaa", Age = 23 });

list.Add(new Person { Name = "bbbbbbbbbbb", Age = 24 });

list.Add(new Person { Name = "ccccccccccccc", Age = 33 });

lv1.DataContext= list;

}

}

第二种

第一步:在XAML文件

<ListView x:Name="lv1"HorizontalAlignment="Left" Margin="102,240,0,0" VerticalAlignment="Top" RenderTransformOrigin="0.498,-1.5">

<ListView.ItemTemplate>

<DataTemplate>

<TextBox Text="{Binding }"></TextBox> //表示binding的值直接等于数据上下文中,也就是说数据源中的每一个项目对应的是listview种的item

</DataTemplate>

</ListView.ItemTemplate>

</ListView>

第二步:在.cs文件中

protected override void OnNavigatedTo(NavigationEventArgs e)

{//首次进入此页面,此时可以加载数据

if (e.NavigationMode == NavigationMode.New)

{

lv1.ItemsSource=new string[] {"aaaaaaaaaaaa","bbbbbbbbb","ccccccccccc"}; //说明listview的每一个item就是一个string

}

}

说明:0、绑定的使用步骤:封装一个对象:要实现接口INotifyPropertyChanged

在相应页面中添加数据:要使用ObservableCollection<封装的对象名字>,然后用ItemsSource或DataContext进行绑定

在XAML文件中绑定。

1、listview的属性之 SelectionMode,有4个值:None 表示listview的所有item都不可以被选择; Single 表示 同时只有一个item被选择 Multiple 表示同时可有多个item被选择。

2、获得listview的选中项:当SelectionMode=Single时

Object obj= lv1.SelectedItem; //lv1是listview的名字,判断obj是否为空
string getName = ((Person)obj).Name;

当SelectionMode=Multiple时

IList<Object> obj= lv1.SelectedItems;
int length = obj.Count;
for(int i=0;i<length;i++)
{
string getname = ((Person)obj[i]).Name;
int getage = ((Person)obj[i]).Age;
}

3、IsItemClickEnabled表示是否触发ItemClick事件,ItemClick事件中e.ClickedItem可以得到点击的项:如果是手动加入的Items ,则值是点击项的Content;如果数据是绑定的,则点击项是 DataContent。

首先设置IsItemClickEnabled=“true",启用ItemClick事件;

监听ItemClick事件,e.ClickedItem为点击的那一项

例如:Person p=e.ClickedItem as Person;

4、ListView的添加/删除和绑定类似,就是首先,将List<Person> list = new List<Person>();改成ObservableCollection<Person> list = new ObservableCollection<Person>();并且定义成全局变量。因为list无法监听item的改变,所以没有效果,因此应该实现一个监听类才行。然后,点击添加/删除之后,执行 list.Add(new Person { Name = "ddddddddddd", Age = 43 }); /list.Remove(对象); /list.RemoveAt(索引值);即可。

ObservableCollection实现了接口INotifyCollection[集合]Changed(监听)和INotifyPropertyChanged,继承了类Collection〈〉。而Collection〈〉中有Add(),Remove(),RemoveAt()等方法,和List类似

5、控件ComboBox 和FlipView数据绑定的方式和ListView一样。

免责声明:文章转载自《十二、数据绑定——listview》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇ToDoListMysql导出逗号分隔的csv文件下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

android 边框圆角

设置边框圆角可以在drawable目录里定义一个xml [xhtml] view plaincopy <?xml version="1.0" encoding="utf-8"?>   <shape xmlns:android="http://schemas.android.com/apk/res/android"&...

python中 array 和 list 不同场景效率对比

在新添加场景中,即 list 使用 append方法,array使用np.append方法。 在100000条数据测试中,list用时:0.0 时 0.0分0.01秒,array用时:0.0 时 0.0分1.93秒。结论: list胜出。 在搜索场景中,即 list 使用 index方法,array使用np.where方法。 在100000条数据测试中,,...

【ITOO 1】将List数据导出Excel表

需求描述:在课表导入的时候,首先给用户提供模板(excel),然后将用户填写好的数据读取到list集合中。再进行判空处赋值处理,以及去重处理。这篇博客,主要介绍读取excel表和导出excel表的方法。 一、读取Excel数据到list<span style="font-family:KaiTi_GB2312;font-size:18px;">...

块状链表[ext/rope]

2008年OI集训论文上有介绍<对块状链表的一点研究>,其主要是结合了链表和数组各自的优点,链表中的节点指向每个数据块,即数组,并且记录数据的个数,然后分块查找和差入。在g++头文件中,<ext/rope>中有成型的块状链表,在using namespace __gnu_cxx;空间中,其操作十分方便。 基本操作: rope lis...

java集合类笔试选择题整理含答案

1、ArrayList list=new ArrayList(20);中的list扩充几次()A. 0B. 1C. 2D. 3答案:A分析:已经指定了长度, 所以不扩容2.List、Set、Map哪个继承自Collection接口,一下说法正确的是()A. List MapB. Set MapC. List SetD. List Map Set答案:C分析...

matlab 中如何创建以及获取popupmenu的值

1.如何创建popupmenu的值 如图,点击河南左边的符号,会弹出右边的小窗口,输入完一项之后点击enter继续创建第二项即可。 2.如何获取popupmenu的值 functionpopupmenu_Callback(hObject, eventdata, handles) val = get(handles.popupmenu,'value...