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 ...
随机推荐
- StackExchange.Redis 使用-配置
Configurationredis有很多不同的方法来配置连接字符串 , StackExchange.Redis 提供了一个丰富的配置模型,当调用Connect 或者 ConnectAsync 时需要 ...
- Linux下Nginx+Tomcat负载均衡和动静分离配置要点
本文使用的Linux发行版:CentOS6.7 下载地址:https://wiki.centos.org/Download 一.安装Nginx 下载源:wget http://nginx.org/pa ...
- 用C#实现封装
用C#实现封装 1.属性对外公开类似于类的接口实现对字段的访问;2.字段为private只能在内部被直接访问,如果当属性为只读,那么可以将形参直接对字段赋值.(有没有更好的方法?);3.可以通过关键字 ...
- 当泛型方法推断,扩展方法遇到泛型类型in/out时。。。
说到泛型方法,这个是.net 2.0的时候引入的一个重要功能,c#2.0也对此作了非常好的支持,可以不需要显试的声明泛型类型,让编译器自动推断,例如: void F<T>(T value) ...
- PlayMaker的应用
PlayMaker属于一个可视化的状态机编辑工具,集成到了Unity的IDE里,在Unity的市场上很受欢迎,本人看见后第一感觉是跟CryEngine的那个状态机特别相似.CE的那个状态机编辑器其实是 ...
- 安全稳定实现redis cluster自动化迁移
背景 目前redis集群最火的是codis和redis cluster(官方),但官方自带工具并没有支持密码操作.那么需要密码认证使用redis cluster集群的同学要仔细看了哦. 相信大家很多人 ...
- 【USACO 2.4】Cow Tours (最短路)
题意:给你n(最多150)个点的坐标,给出邻接矩阵,并且整个图至少两个联通块,现在让你连接一条边,使得所有可联通的两点的最短距离的最大值最小. 题解:先dfs染色,再用floyd跑出原图的直径O($n ...
- 【BZOJ-3039&1057】玉蟾宫&棋盘制作 悬线法
3039: 玉蟾宫 Time Limit: 2 Sec Memory Limit: 128 MBSubmit: 753 Solved: 444[Submit][Status][Discuss] D ...
- MySQL复制配置(多主一从)
复制多主一从 replicaion 原理 复制有三个步骤:(分为三个线程 slave:io线程 sql线程 master:io线程) 1.master将改变记录到二进制日志(binary log)中( ...
- BUAA_OVERWATCH第一次行动前战略部署
这太IMBA了! 需求调研问卷的反馈 #define A 调查问卷 A设计背景 随着各种新兴手游的兴起,以及各大直播间内Lying Man的火热,以及各种娱乐方式的发展,传统桌游很好地移植到app上的 ...