在windows phone中绑定集合数据的时候,有时候需要分层数据,通常需要以主从试图形式显示。通常的方法是将第二个ListBox(主视图)的数据源绑定到第一个ListBox

(从视图)的SelectedItem,或者通过第一个ListBox的SelectionChanged事件来设置绑定。但是借助CollectionViewSource类可以更方便的实现;

CollectionView是一个集合视图类,支持数据的排序、分组、过滤。对数据的映像进行排列组合;

CollectionViewSource是CollectionView的一个XAML代理,可以在XAML中使用;

案例说明:用主从试图关系显示两个的员工列表;效果图如下:

前期工作,创建三个类来初始数据源;

(1)Employee.cs

    public class Employee{public int Number { get; set; } //工号public string  Name { get; set; } //姓名public string  Sex { get; set; } //性别public int BirthYear { get; set; } //出生年份}

(2)Department.cs

    public class Department:ObservableCollection<Employee>{public string DepName { get; set; }public ObservableCollection<Employee> Employees { get; set; }}

(3)DepartmentList.cs

    public class DepartmentList:ObservableCollection<Department>{public DepartmentList(){ObservableCollection<Employee> employee1 = new ObservableCollection<Employee> {new Employee{Number=2012,Name="netboy",Sex="boy",BirthYear=1992},new Employee{Number=2013,Name="dandan",Sex="girl",BirthYear=2000},new Employee{Number=2014,Name="xiaobai",Sex="girl",BirthYear=2012}};ObservableCollection<Employee> employee2 = new ObservableCollection<Employee> {new Employee{Number=2020,Name="kaizi",Sex="girl",BirthYear=2011},new Employee{Number=2021,Name="yangzai",Sex="gril",BirthYear=2010}};this.Add(new Department { DepName = "技术部", Employees = employee1 });this.Add(new Department { DepName = "商务部", Employees = employee2 });//ObservableCollection<Department> deparment = new ObservableCollection<Department> //{//    new Department{DepName="tengfei",Employees=employee1},//    new Department{DepName="google",Employees=employee2}//};}}

注意:使用ObservableCollection<T>的时候需要引用命名空间——using System.Collections.ObjectModel;

通过在新建页面的phone:PhoneApplicationPage标记中添加一个命名空间映射。代码如下:

xmlns:local="clr-namespace:数据绑定"//我的项目为“数据绑定”

添加资源字典:

   <phone:PhoneApplicationPage.Resources><local:DepartmentList x:Key="deplist"/><CollectionViewSource x:Key="departmentView"Source="{StaticResource deplist}"/><DataTemplate x:Key="dtEmployees"><StackPanel Height="50"HorizontalAlignment="Center"Width="480"VerticalAlignment="Top"Orientation="Horizontal"><TextBlock Height="50"HorizontalAlignment="Left"Width="90"Text="{Binding Number}"/><TextBlock Height="50"Width="120"Text="{Binding Name}"/><TextBlock Height="50"Width="120"Text="{Binding BirthYear}"/><TextBlock Height="50"Width="120"Text="{Binding Sex}"/></StackPanel></DataTemplate></phone:PhoneApplicationPage.Resources>

在布局页面中添加如下代码:

            <TextBlock Width="300"Height="50"FontSize="36"Text="请选择部门:"HorizontalAlignment="Left"VerticalAlignment="Top"Margin="10,30,0,0"/><ListBox Name="lb1"Height="100"Width="156"DisplayMemberPath="DepName"ItemsSource="{Binding Source={StaticResource departmentView}}"Margin="40,86,260,0"HorizontalAlignment="Center"VerticalAlignment="Top" FontSize="32" /><TextBlock Height="62"Width="111"HorizontalAlignment="Left"VerticalAlignment="Top"Text="{Binding Path=DepName,Source={StaticResource departmentView}}"Foreground="Red" Margin="12,210,0,0" FontSize="32" /><TextBlock Height="50"HorizontalAlignment="Right"Text="员工列表"VerticalAlignment="Top" Margin="0,210,169,0" Width="158" FontSize="32" /><TextBlock Height="50"HorizontalAlignment="Left"Width="120"Text="性别" Margin="344,278,0,279" FontSize="32" /><TextBlock Height="50" Text="出生日期" Margin="204,278,112,279" FontSize="32" /><TextBlock Height="50"Width="120"Text="工号" Margin="6,278,330,279" FontSize="32" /><TextBlock Height="50"Width="98"Text="名字" Margin="0,278,260,279" HorizontalAlignment="Right" FontSize="32" /><ListBox Name="lb2"Height="170"VerticalAlignment="Top"ItemsSource="{Binding Path=Employees,Source={StaticResource departmentView}}"ItemTemplate="{StaticResource dtEmployees}" Margin="12,334,-46,0" FontSize="32" />
http://www.cnblogs.com/ngnetboy/archive/2012/04/12/2444659.html

转载于:https://www.cnblogs.com/sjqq/p/7788920.html

【windows phone】CollectionViewSource的妙用相关推荐

  1. Windows操作系统初级教程

    windows操作系统初级教程 制作一款超实用的windows系统安装光盘 制作windows xp系统补丁自安装光盘 windows xp操作系统自动安装全攻略 windows系统安装免输序列号的方 ...

  2. datagrid wpf 刷新数据_wpf – 更新数据源时刷新Datagrid

    我有一个数据网格,显示一个绑定到DataSource的表,该数据源不断更改时间约束. 如何在更新myDataSource值时刷新数据网格的内容. P.S:我的DataSource表中的值由监控系统更新 ...

  3. WPF:DataGrid可过滤、多语言

    目录 介绍 背景 怎么运作 自定义控件 如何使用 基准 下载演示项目 - 133.8 KB GitHub 存储库 NuGet 包 介绍 本文介绍如何创建一个自定义DataGrid控件,该DataGri ...

  4. 《Excel 职场手册:260招菜鸟变达人》一第 1 招 快捷键的妙用(基于Windows操作系统)...

    本节书摘来异步社区<Excel 职场手册:260招菜鸟变达人>一书中的第1章,第1节,作者: 聂春霞 , 佛山小老鼠 责编: 王峰松,更多章节内容可以访问云栖社区"异步社区&qu ...

  5. 浅谈windows 编程中SendMessage函数的妙用!!!

    windows编程中SendMessage函数是非常重要的,而且这个对于理解windows的消息机制也很重要.本文用代码的方式实现了一些功能,借以说明此函数之妙用.说明不当之处,希望批评指正,谢谢! ...

  6. 妙控2代鼠标用于Windows系统注册表修改方法

    妙控鼠标如何在Windows系统中愉快使用手势呢! 先装驱动,驱动下载,安装! 请看下面操作: 1.首先把鼠标跟电脑连接好,然后右键"此电脑(或我的电脑)"点击管理 2.点击设备管 ...

  7. apple 妙控键盘 windows能用吗?

    apple 妙控键盘 windows能用吗? 最好不要用 https://zhuanlan.zhihu.com/p/77134495 结论:在windows下使用apple键盘,就是自找苦吃. 第一: ...

  8. observable_对于在Windows Phone 8上绑定到已过滤的Observable Collections,CollectionViewSource非常有用

    observable I've been working on this Windows Phone 8 app on the side (it's a news app, but mark my w ...

  9. IT小妙招之:快马加鞭,Windows 7启动大提速

    情景再现 现在的电脑硬件主流配置大概都是双核CPU以上了,不过很多人还是嫌Windows 开机不够快,感觉好像四核机器和双核机器开机速度都是一样的.那是因为在多核心的硬件之下,Windows 始终是默 ...

最新文章

  1. easy-mock写的一个简单的模拟二页的反馈
  2. ABAP程序发送邮件
  3. wxWidgets:wxStreamToTextRedirector类用法
  4. [JS-DOM]事件监听机制
  5. server精简版代理意外终止 sql_来自阿里巴巴内部JAVA面试宝典意外流出
  6. 从Maven远程存储库下载
  7. 纠正存储 dict 的元素前是计算 key 的 hash 值?
  8. linux连接u盘是提示usb驱动错误,U盘提示无法访问,由于I/O设备错误,无法运行此项请求3种完美解决办法...
  9. struts2实现XML异步交互
  10. 数据结构-栈操作-用链表实现栈基本操作
  11. 视频格式转换库--libyuv的简介与编译
  12. 计算椭圆运动轨迹的算法
  13. linux命令sel是什么意思,sel
  14. 南阳oj 144 小柯的苦恼
  15. 测试网页版淘宝购物车
  16. 中国石油大学计算机应用基础在线考试答案,中国石油大学2020年春季《计算机应用基础》在线考试答卷附标准答案...
  17. cmd命令行进行C++代码编译运行;实现进程调度和存储管理
  18. 【C语言】初识C语言——认识第一个C语言程序
  19. Drupal框架使用中...
  20. 压缩文件zip怎么查看注释呢,市场上一些破软件不好用啊,我有秘诀

热门文章

  1. 搭建高可用的redis集群,避免standalone模式带给你的苦难
  2. iOS应用如何支持IPV6
  3. 读小米的《参与感》书的摘录(一),与大家分享!
  4. gson的简单使用方法
  5. Forward框架的逆袭:解析Forward+渲染
  6. 李洋疯狂C语言之关于自增自减遇到的一些问题
  7. CentOS7查看开放端口命令
  8. 读《程序员的SQL金典》[2]--函数
  9. linux -- read(), write()
  10. Python 支付宝支付代码