WPF CollectionViewSource CollectionView
CollectionView 通俗讲就是可以对你绑定的集合可以进行 分组,排序 等功能
CollectionViewSource 根据字面意思是xxx的数据源
详细的介绍还是看
http://www.cnblogs.com/zhouyinhui/archive/2007/12/07/987076.html
文字描述太复杂 了看不懂
最后只知道一句
可以对你页面绑定的集合(gridview listBox等)可以进行分组 排序等功能。
例子:
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:scm="clr-namespace:System.ComponentModel;assembly=WindowsBase"
Title="MainWindow" Height="350" Width="525" Name="UI"> <!--资源文件(页面级) 类似javascript什么的全局变量-->
<Window.Resources>
<!--x:Key="Items" 类似申明一个ID Source数据源 binding-->
<CollectionViewSource x:Key="objID" Source="{Binding ElementName=UI, Path=Items}" >
<CollectionViewSource.SortDescriptions> <!--scm ComponentModel命名空间下 你说我个小白开始知道吗?-->
<!--PropertyName="Id" 理解key value 类似(color: #075db3;) PropertyName=>color Id Items里面的属性-->
<scm:SortDescription PropertyName="Id" /> </CollectionViewSource.SortDescriptions>
</CollectionViewSource> </Window.Resources> <Grid>
<!--实例化具体的控件类 数据源来源于上面指定的ID StaticResource 静态-->
<ListBox ItemsSource="{Binding Source={StaticResource objID}}" />
</Grid>
</Window>
后台cs:
public partial class MainWindow : Window
{ /// <summary>
/// ObservableCollection 通俗就是myVar变了我会告诉你 通知你(类似线程的回调函数通知UI线程一样)
/// </summary>
private ObservableCollection<MyObject> myVar = new ObservableCollection<MyObject>(); /// <summary>
/// 属性没什么好解释的
/// </summary>
public ObservableCollection<MyObject> Items
{
get { return myVar; }
set { myVar = value; }
} /// <summary>
/// 构造函数
/// </summary>
public MainWindow()
{
//创建页面控件和实例化一些对象如窗体 你为什么是控件呢 为什么要我搞cs呢?你不知道我讨厌控件吗?
InitializeComponent(); //赋值 add 没什么好解释的
Items.Add(new MyObject { Description = "Stack", Id = });
Items.Add(new MyObject { Description = "OverFlow", Id = });
Items.Add(new MyObject { Description = "StackOverFlow", Id = });
Items.Add(new MyObject { Description = "Stack", Id = });
Items.Add(new MyObject { Description = "Stack", Id = });
Items.Add(new MyObject { Description = "OverFlow", Id = });
} } /// <summary>
/// 申明类 没什么好解释的
/// </summary>
public class MyObject
{
public int Id { get; set; } public string Description { get; set; } /// <summary>
/// 重写ToString方法
/// </summary>
/// <returns></returns>
public override string ToString()
{
return string.Format("Desc: {0}, Id: {1}", Description, Id);
}
}
结果:
核心:
binging
前台和后台最终编译成一个类(dll) 说的通俗一点就是前台和后台在是一个类 一个类里面互相调用方法和属性 不是很正常吗?这样就理解了
为什么前台可以调用后台 (说到底 不管什么最后都是对象 就是对象之间的访问!这个也行就是oop吧)
最后Window 是根 他就有所有后台的方法和属性
最后 Source="{Binding ElementName=UI, Path=Items}" 翻译成汉语就是:绑定到元素名称为 UI 的对象的名称为 Items 的属性。
通俗 就是我的数据源是name是UI(就是window里面的name) Items就是UI里面的属性
同理 Source = "{Binding Items}" 翻译成汉语就是绑定到当前数据上下文的名称为 Items 的属性。上下文=>DataContext
最后吐槽下 微软你为什么封装的那么完美 你知道对别人来说意味着什么 =>Long live open source
WPF CollectionViewSource CollectionView的更多相关文章
- wpf CollectionViewSource与ListBox的折叠、分组显示,及输入关键字 Filter的筛选
在wpf中虽然ObservableCollection<T>作为ListBox的Itemsource,很好,很强大!但是CollectionViewSource与ListBox才是天作之合 ...
- wpf,CollectionViewSource,使用数据过滤 筛选 功能。
class TextListBoxVMpublic : ViewModelBase { public TextListBoxVMpublic() { var list = this.GetEmploy ...
- wpf CollectionViewSource的运用
实体类: 员工类: public class Department : ObservableCollection<Employee> { public string DepName { g ...
- [wpf] collectionViewsource 排序 和分组
xmlns:scm="clr-namespace:System.ComponentModel;assembly=WindowsBase" xmlns:swd="clr-n ...
- 谈谈WPF中的CollectionView与CollectionViewSource (1)
原文:谈谈WPF中的CollectionView与CollectionViewSource (1) 谈谈WPF中的CollectionView与CollectionViewSource (1) ...
- 谈谈WPF中的CollectionView与CollectionViewSource
https://www.cnblogs.com/zhouyinhui/archive/2007/12/07/987076.html
- WPF Knowledge Points - 默认视图(DefaultView),CollectionSourceView,CollectionView的区别
这些天一直在做一些关于Treeview的事情,想写出来一些用法和心得.说到集合对象的显示和表现,CollectionSourceView和CollectionView有着至关重要的作用,所以在写Tre ...
- [转]WPF and Silverlight 学习笔记(二十五):使用CollectionView实现对绑定数据的排序、筛选、分组
在第二十三节,我们使用CollectionView实现了对于绑定数据的导航,除导航功能外,还可以通过CollectionView对数据进行类似于DataView的排序.筛选等功能. 一.数据的排序: ...
- [Wpf]在C#中添加 collectionViewSource
Products = new ObservableCollection<Product>(products); ProductOptions = new ObservableCollect ...
随机推荐
- Qt——自定义属性
一.Qt中的属性 属性是指窗口或控件的属性,比如opacity属性表示“透明度”,geometry指的是“位置和大小”,pos属性代表“位置”. qt中的控件有自带的属性,我们也可以自己定义属性. Q ...
- AVA数据库连接池.
package db_pool; //// 一个效果非常不错的JAVA数据库连接池.// from:http://www.jxer.com/home/?uid-195-action-viewspace ...
- 2015年3月阿里内推(c++研发)实习生电面经历
2015年3月开学开始就听说阿里会有内推,果不其然在师兄的引荐下推了菜鸟网络,但是在学校的BBS上看到了阿里云部门,而且要会C++,这使我更感兴趣,重新选择了方向,当然最后选择了阿里云.在此分享一下三 ...
- EF批量添加数据性能慢的问题的解决方案
//EF批量添加数据性能慢的问题的解决方案 public ActionResult BatchAdd() { using (var db = new ToneRoad.CEA.DbContext.Db ...
- Fluent Nhibernate之旅(五)--利用AutoMapping进行简单开发
Fluent Nhibernate(以下简称FN)发展到如今,已经相当成熟了,在Nhibernate的书中也相应的推荐了使用FN来进行映射配置,之前写的FN之旅至今还有很多人会来私信我问题,说来惭愧, ...
- Linux -- CentOS7修改防护墙端口
CentOS升级到7之后,发现无法使用iptables控制Linuxs的端口,原因是Centos 7使用firewalld代替了原来的iptables.下面记录如何使用firewalld开放Linux ...
- sphinx应用
sphinx调用原理 只需要提交要查询,sphinx将返回唯一的id号 API调用 1.创建连接 $sphinx = new SphinxClient(); $sphinx->SetServ ...
- BZOJ 2038: [2009国家集训队]小Z的袜子(hose)
2038: [2009国家集训队]小Z的袜子(hose) Time Limit: 20 Sec Memory Limit: 259 MBSubmit: 7676 Solved: 3509[Subm ...
- System.Diagnostics.Process.Star的用法
System.Diagnostics.Process.Start(); 能做什么呢?它主要有以下几个功能: 1.打开某个链接网址(弹窗). 2.定位打开某个文件目录. 3.打开系统特殊文件夹,如“控制 ...
- Nginx反向代理tomcat,seesion会话保持。
proxy_pass http://10.0.0.10:8081/monitor/; proxy_cookie_path /monitor/ /; proxy_set_header Host &quo ...