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的更多相关文章

  1. wpf CollectionViewSource与ListBox的折叠、分组显示,及输入关键字 Filter的筛选

    在wpf中虽然ObservableCollection<T>作为ListBox的Itemsource,很好,很强大!但是CollectionViewSource与ListBox才是天作之合 ...

  2. wpf,CollectionViewSource,使用数据过滤 筛选 功能。

    class TextListBoxVMpublic : ViewModelBase { public TextListBoxVMpublic() { var list = this.GetEmploy ...

  3. wpf CollectionViewSource的运用

    实体类: 员工类: public class Department : ObservableCollection<Employee> { public string DepName { g ...

  4. [wpf] collectionViewsource 排序 和分组

    xmlns:scm="clr-namespace:System.ComponentModel;assembly=WindowsBase" xmlns:swd="clr-n ...

  5. 谈谈WPF中的CollectionView与CollectionViewSource (1)

    原文:谈谈WPF中的CollectionView与CollectionViewSource (1) 谈谈WPF中的CollectionView与CollectionViewSource (1)     ...

  6. 谈谈WPF中的CollectionView与CollectionViewSource

    https://www.cnblogs.com/zhouyinhui/archive/2007/12/07/987076.html

  7. WPF Knowledge Points - 默认视图(DefaultView),CollectionSourceView,CollectionView的区别

    这些天一直在做一些关于Treeview的事情,想写出来一些用法和心得.说到集合对象的显示和表现,CollectionSourceView和CollectionView有着至关重要的作用,所以在写Tre ...

  8. [转]WPF and Silverlight 学习笔记(二十五):使用CollectionView实现对绑定数据的排序、筛选、分组

    在第二十三节,我们使用CollectionView实现了对于绑定数据的导航,除导航功能外,还可以通过CollectionView对数据进行类似于DataView的排序.筛选等功能. 一.数据的排序: ...

  9. [Wpf]在C#中添加 collectionViewSource

    Products = new ObservableCollection<Product>(products); ProductOptions = new ObservableCollect ...

随机推荐

  1. 【ASP.NET实战教程】基于ASP.NET技术下多用户博客系统全程实战开发(NNblog)

    岁末主推:牛牛老师主讲,多用户博客系统,基于ASP.NET技术,年后将带来移动业务平台项目项目目标: 打造个性品牌Blogo,定制多用户博客 为每一个博客用户提供个性化的 blogo解决方案,打造精品 ...

  2. Unity、Exception Handling引入MVP

    什么是MVP?在“MVP初探”里就有讲过了,就是一种UI的架构模式. 简单的描述一下Unity和Exception Handling Application Block: Unity是一个轻量级的可扩 ...

  3. 种子填充算法描述及C++代码实现

    项目需要看了种子填充算法,改进了算法主要去除面积小的部分.种子填充算法分为两种,简单的和基于扫描线的方法,简单的算法如下描述(笔者针对的是二值图像): (1)从上到下,从左到有,依次扫描每个像素: ( ...

  4. Eclipse+maven创建webapp项目<二>(转)

    原文地址:http://www.cnblogs.com/candle806/p/3439469.html 1.开启eclipse,右键new-->other,如下图找到maven project ...

  5. “is null”与“=”的使用

    普通的值可以进行"="操作,例如条件中一般都会这样出现:sUserName='张三',如果sUserName的值为null,要想找出所 有名字为null的记录时,不能这样用:sUs ...

  6. Leetcode 39. Combination Sum

    Given a set of candidate numbers (C) (without duplicates) and a target number (T), find all unique c ...

  7. miniui后台无法接收到input传值

    出错原因:在miniui中,此处应写成<input textName="current_unit",在php中才可以使用$_POST['current_unit']获取到值, ...

  8. Beta阶段第五次Scrum Meeting

    情况简述 BETA阶段第二次Scrum Meeting 敏捷开发起始时间 2016/12/15 00:00 敏捷开发终止时间 2016/12/16 00:00 会议基本内容摘要 平稳推进 参与讨论人员 ...

  9. 工作中的一些JS--为网页动态添加元素,类似于邮箱添加联系人的功能

    项目中要解决一个为下拉框动态添加选项的问题,之前从网上搜到结果,写个JS函数 //先新建元素,并添加属性 var option = document.createElement("optio ...

  10. [Unity3D]引擎学习之注意事项(持续更新中)

    调试相关 如果是想在触发粒子系统效果的时候播放声音(比如爆炸的特殊发生时也播放声音),则需要将爆炸效果的粒子系统保持为Prefab后,添加Audio Source组件,在组件中添加声音文件并且确保pl ...