博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Windows 8实例教程系列 - 数据绑定高级实例
阅读量:7077 次
发布时间:2019-06-28

本文共 6767 字,大约阅读时间需要 22 分钟。

上篇中,介绍Windows 8应用开发数据绑定基础,其中包括一些简单的数据绑定控件的使用。本篇将介绍较为复杂的数据绑定控件实例, 其中包括ListView, GridView,以及GridView分组,GridView分组缩放等绑定功能。

了解ListView和GridView数据绑定控件

两个控件都是继承自ItemsControl类,在功能上类似,都是在应用中显示数据集合,但是显示方式不同。

ListView显示方式为垂直堆栈形式,以列表的形式显示数据;常用于显示简洁数据列表,选中选项后显示详细数据。

GridView显示方式是平行堆栈形式,经常会用于显示较为丰富的数据集合,例如,相册列表应用,显示照片在每个选项。

 
 

 

ListView控件实例

前台代码:

 

 

 

在ListView中使用了自定义ItemTemplate,自定义设置选项布局,

Windows 8实例教程 - ListView

后台代码:

 

public sealed partial class MainPage : Page    {        private ObservableCollection
Contacts = new ObservableCollection
(); public MainPage() { this.InitializeComponent(); LoadContacts(); } private void LoadContacts() { Contacts.Add(new Contact { Email = "qq34506@hotmail.com", Author = "Kevin Fan", Thumbnail = new BitmapImage(new Uri("ms-appx:///Assets/60Mail01.png", UriKind.RelativeOrAbsolute)) }); Contacts.Add(new Contact { Email = "admin@silverlightchina.net", Author = "银光中国", Thumbnail = new BitmapImage(new Uri("ms-appx:///Assets/60Mail02.png", UriKind.RelativeOrAbsolute)) }); Contacts.Add(new Contact { Email = "SandyY@yahoo.ca", Author = "Sandy Yang", Thumbnail = new BitmapImage(new Uri("ms-appx:///Assets/60Mail03.png", UriKind.RelativeOrAbsolute)) }); lvMainListView.ItemsSource = Contacts; } private void lvMainListView_SelectionChanged_1(object sender, SelectionChangedEventArgs e) { SelectedListItem.Text = String.Format("Selected Contact's Email: {0}", ((Contact)e.AddedItems[0]).Email); } }

 

GridView控件

前台代码:

GridView控件使用两个自定义Template,分别为ItemTemplate和ItemsPanel,

Windows 8实例教程 - GridView

后台代码:

public sealed partial class MainPage : Page    {        private ObservableCollection
Contacts = new ObservableCollection
(); private CollectionViewSource GroupedItems = new CollectionViewSource { IsSourceGrouped = true }; public MainPage() { this.InitializeComponent(); LoadContacts(); } private void gvMainGridView_SelectionChanged_1(object sender, SelectionChangedEventArgs e) { SelectedGridItem.Text = String.Format("Selected Contact's Email: {0}", ((Contact)e.AddedItems[0]).Email); } private void LoadContacts() { Contacts.Add(new Contact { Email = "qq34506@hotmail.com", Author = "Kevin Fan", Thumbnail = new BitmapImage(new Uri("ms-appx:///Assets/60Mail01.png", UriKind.RelativeOrAbsolute)) }); Contacts.Add(new Contact { Email = "admin@silverlightchina.net", Author = "银光中国", Thumbnail = new BitmapImage(new Uri("ms-appx:///Assets/60Mail02.png", UriKind.RelativeOrAbsolute)) }); Contacts.Add(new Contact { Email = "SandyY@yahoo.ca", Author = "Sandy Yang", Thumbnail = new BitmapImage(new Uri("ms-appx:///Assets/60Mail03.png", UriKind.RelativeOrAbsolute)) }); gvMainGridView.ItemsSource = Contacts; } }

Windows store应用中,对于GridView控件使用较为频繁,下面两个实例是从GridView扩展而来。

GridView分组 

GridView控件分组,通过对于相同对象属性绑定实现分组功能。该实例分为Developer,Designer和Manager三组,

前台代码:

该实例使用GridView实例中相同模板代码,这里不再重复赘述,

 

后台代码:

后台代码数据源代码与GridView实例类似,只是在页面载入时需要对数据源进行分组操作。代码如下:

private List
AllContacts = new List
(); private CollectionViewSource ContactCollection = new CollectionViewSource { IsSourceGrouped = true, ItemsPath = new PropertyPath("Contacts") }; public MainPage() { this.InitializeComponent(); LoadContacts(); var groupedContacts = AllContacts.GroupBy(x => x.Role).Select(x => new GroupContactList { Role = x.Key, Contacts = x.ToList() }); ContactCollection.Source = groupedContacts.ToList(); gvMainGridView.ItemsSource = ContactCollection.View; }

 

GridView Zoom分组

该实例根据GridView分组功能使用SemanticZoom控件实现数据分组以及缩放功能。

前台代码:

后代代码:
 

private List
GroupedContacts = new List
(); private List
AllContacts = new List
(); public MainPage() { this.InitializeComponent(); LoadContacts(); var groupedContacts = AllContacts.GroupBy(x => x.Role).Select(x => new GroupContactList { Role = x.Key, Contacts = x.ToList() }); GroupedContacts = groupedContacts.ToList(); ContactCollection.Source = groupedContacts.ToList(); gvZoomedOutGridView.ItemsSource = ContactCollection.View.CollectionGroups; }

 

本篇介绍一些较为复杂的数据绑定控件实例,欢迎留言讨论学习。 

加入QQ群交流学习:

22308706(一群) 超级群500人 

37891947(二群) 超级群500人 
100844510(三群) 高级群200人 
32679922(四群) 超级群500人 
23413513(五群) 高级群200人 
32679955(六群) 超级群500人 
88585140(八群) 超级群500人 
128043302(九群 企业应用开发推荐群) 高级群200人 
101364438(十群) 超级群500人 

68435160(十一群 企业应用开发推荐群)超级群500人

 

 

 

 

 

转载地址:http://fjdml.baihongyu.com/

你可能感兴趣的文章
【运维】nginx服务器基本配置指南
查看>>
Angular通过订阅观察者对象实现不同组件中数据的实时传递
查看>>
Bitmap的图片压缩汇总
查看>>
树莓派学习手记——制作一个空调遥控器(红外接收、发射的实现)
查看>>
《Maven实战》阅读总结(二)Maven仓库
查看>>
【369天】每日项目总结系列106(2018.02.09)
查看>>
WordPress 主题开发:从入门到精通(必读)
查看>>
Vue入坑记
查看>>
#ReactApp项目构建流程【3】
查看>>
canal 1.0.25 快速启动配置
查看>>
SpringBoot使用AOP+注解实现简单的权限验证
查看>>
Android 8.0 系统和API的变化
查看>>
Git 多人协作开发流程
查看>>
js 时间对象的常规操作
查看>>
BiuJS[v1.0]说明文档(2):数据劫持
查看>>
Centos 7 Yum方式安装Mongdb 3.4
查看>>
遇见大数据可视化 : 【云图】让数据可见
查看>>
Mac Docker 创建第一个Django 应用,Part 1
查看>>
zendAPI 的 CMake 参数详解
查看>>
【201天】黑马程序员27天视频学习笔记【Day18复习脑图】
查看>>