【windows phone】CollectionViewSource的妙用

在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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/467398.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ftp linux包,图文详解Ubuntu搭建Ftp服务器的方法(包成功)

一、今天下午由于课程的要求不得已做了Ubuntu搭建Ftp服务器的实验&#xff0c;但是实验指导书还是N年前的技术&#xff0c;网上搜了一大把&#xff0c;都是模模糊糊的&#xff01;在百般困难中终于试验成功&#xff0c;特把经验分给大家 希望大家少走弯路&#xff01;二、详细步…

产品狗,工作三年,转行AI应该怎样规划?

作为AI 初学者来说&#xff0c;最大的问题就是&#xff1a;资料太多&#xff01;&#xff01;&#xff01;看不完&#xff01;&#xff01;&#xff01;不知道如何取舍&#xff01;&#xff01;&#xff01;人的精力有限&#xff01;&#xff01;&#xff01;大部分想转行AI算法…

你为什么喜欢VIM?

昨天看到的一个讨论&#xff0c;说vim有没有那么必要&#xff1f;所以写了这篇文章&#xff0c;在评论区说出你的观点&#xff0c;当然说出你的观点的时候&#xff0c;你拿不到一百万&#xff0c;也得不到小红花&#xff0c;但也是因为你的评论&#xff0c;我可能会开心一整天。…

RTT大牛告诉你,混合微内核是什么?

RT-Thread之前写过好几篇文章介绍微内核&#xff0c;然而不少开发者依然不清楚到底微内核操作系统是什么。为此&#xff0c;我们特别整理了5期快问快答&#xff0c;来为大家答疑解惑&#xff01;RT-Thread Smart称作是混合微内核操作系统&#xff0c;为什么叫混合微内核操作系统…

计算机linux运维日记,计算机的运维系统情况

其实&#xff0c;对于计算机的主要部件来说&#xff0c;计算机是有硬件和软件组成的&#xff0c;并且能够通过硬件和软件的协同工作完成了的&#xff0c;而对于一些计算机的硬件&#xff0c;则是由一些不同的部件进行完成的&#xff0c;那么其中主要的补间就是内存&#xff0c;…

Linux ALSA 图解

最近在解决一个音频的问题&#xff0c;所以正好借这个机会来把音频的东西重新梳理一下&#xff0c;总结是一个很好的习惯&#xff0c;能方便自以后遇到问题快速排查问题。平台「MT8167」内核版本「kernel 4.4」音频读数据函数流程tinyalsa调用读取函数IOCTL调用流程读取数据到应…

将一段复杂文本变成字符串的赋值语句

因为需要在C#的代码中&#xff0c;写入一大段的js代码和网页代码&#xff0c;试验已经没有问题了。实现时却碰到一个小问题&#xff0c;就是大段的js和html代码&#xff0c;应该以什么方式存在。最省事的方式&#xff0c;其实就是存在一个单独的文件中&#xff0c;每次读入即可…

ARM 原子操作里的两个汇编指令

今天一个读者朋友给我留言&#xff0c;问了这个问题&#xff0c;ARM原子操作的汇编代码&#xff0c;还给我截图了两个不同的解释&#xff0c;让我说哪个是正确的。原子操作的起因是为了内核同步&#xff0c;保证数据在正确性&#xff0c;之前已经吹过一波&#xff0c;可以看这几…

秒,在解答这个C语言题目上,我们都败了

看这篇文章之前&#xff0c;我觉得可以先看看下面这篇文章 看printk引发的一点思考不管我们用的printk还是printf&#xff0c;它们的核心都是可变参数的函数&#xff0c;所以可以拼接很多参数传递给函数实体&#xff0c;然后函数实体里面可以通过某种方式解析这些参数。看看这个…

Linux kernel 同步机制(下篇)

之前的文章Linux kernel同步机制在上一部分&#xff0c;我们讨论了最基本常见的几类同步机制&#xff0c;这一部分我们将讨论相对复杂的几种同步机制&#xff0c;尤其是读写信号量和RCU&#xff0c;在操作系统内核中有相当广泛的应用。读写信号量&#xff08;rw_semaphore&…

白话设计模式——Abstract Factory

Abstract Factory&#xff0c;把英文直接翻译过来的话就是“抽象工厂”&#xff0c;既然是工厂&#xff0c;那就肯定是生产产品的地方。不过&#xff0c;它不是生产同一类的产品&#xff0c;而是生产同一系列的产品。举个例子&#xff0c;广州本田现在生产3种汽车&#xff0c;O…

工程师实战:单片机裸机程序框架是怎样炼成的?

前言 前不久&#xff0c;我有位做测试的朋友转去做开发的工作&#xff0c;面试遇到了一个问题&#xff0c;他没明白&#xff0c;打电话问了我。题目大概就是&#xff1a;在单片机裸机开发时&#xff0c;单片机要处理多个任务&#xff0c;此时你的程序框架是怎样的呢&#xff1f…

c 语言指针教学视频,[C语言] 猎豹网校 C和指针视频教程

资源介绍21days_Cpp_二进制和十六进制.mp4xa0xa080x86_内联汇编.mp4xa0xa0ABG2C_for_循环.mp4xa0xa0ABG2C_关系运算符.mp4xa0xa0ABG2C_字符串.mp4xa0xa0ABG2C_循环.mp4xa0xa0ABG2C_数学运算.mp4xa0xa0ABG2C_更高级的运算符.mp4xa0xa0ABG2C_测试多个值.mp4xa0xa0ABG2C_终止循环.…

图解http

今天是周五&#xff0c;按照正常的情况&#xff0c;今天下班后将会经历一周中最愉快的时光&#xff0c;愉快的时间总是会有那么一些短暂&#xff0c;所以我就送给大家一个资料 「图解http」这是一个微信好友发给我的&#xff0c;他一直给我发送了很多很多消息&#xff0c;比如什…

为什么执行自己的程序要在前面加./

前言在Linux中&#xff0c;我们执行内置命令时&#xff0c;直接输入命令名称即可&#xff0c;如&#xff1a;$ mv a b #将a重命名为b而在执行自己写好的程序时&#xff0c;却要带上./&#xff0c;例如&#xff1a;$ hello hello: command not found $ ./hello hello world这是为…

C语言怎么计算数据类型范围?

之前在网上看到的一个讨论&#xff0c;是谁决定了数据类型的范围&#xff1f;比如说&#xff0c;怎么确定 char 就是 -128~127 &#xff0c;而不是 -127~128 呢&#xff1f;说下规定signed 的取值范围是 -(2N-1) to 2N-1 - 1unsigned 的取值范围是 0 to (2N-1) (2N-1 - 1)只要…

双十一为何规则复杂,套路多多

为啥不直接打5折?为了让你把“穷人”俩字写到自己脸上啊。 双十一快到了&#xff0c;今年我又一次有了不太想参加的感觉。作为一个阅读理解不太灵光的人&#xff0c;去年的活动我就整得不太明白——优惠券都是十块十块的&#xff0c;也不知道该咋用;还有预付款、整点秒杀之类的…

团建是什么鬼?

2012年我入职TCL&#xff0c;在TCL我体会到了团队建设的文化&#xff0c;也正是经历了那段职场&#xff0c;我明白了很多「可意味不可言传」。那时候我们经常五十成群出去吃饭、喝酒、唱歌&#xff1b;上学那会我很不喜欢团队活动&#xff0c;特别是室内的活动&#xff0c;总感…

Alpha 答辩总结

【Alpha展示评审表格】 小组序号小组名称格式&#xff08;20%&#xff09;内容&#xff08;20%&#xff09;PPT&#xff08;20%&#xff09;演讲&#xff08;20%&#xff09;答辩&#xff08;20%&#xff09;总分1天机组1515151516762PMS1617171616824“像我这么能打的还有五个…