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 ...
随机推荐
- MathType for mac 能够实现在Word里面双击公式编辑的方法
最近我遇到了一个问题,在使用Word编辑公式时遇到了阻碍. 问题: 我为了顺应潮流呢,用的是office for mac2016版本,在发现MathType安装好后,不能连接到Word里面,从Math ...
- oracle的decode函数在mysql的实现
oracle中的decode函数很好用,换成mysql中可以用类似下面的方法实现: SELECT IF(TRUE, '真值', '假值'); 如果想再弄复杂点,可以多个IF嵌套,不过嵌套的层次多了,代 ...
- [[iso教程]] 《4个月ios实体教程》全网最新、最全ios视频教程
全网最新.最全ios视频教程 内容简介 <ios实体教程>主要介绍如何使用iOS提供的强大工具集创建iOS应用.全视频对iOS操作系统做了全面的介绍,首先讲解如何构建应用程序的用户界面,涵 ...
- 如何使iframe透明
<html> <head> <meta http-equiv="Content-Type" content="text/html; char ...
- VirtualBox中Ubuntu 14.04屏幕分辨率不能设置的问题
VirtualBox中Ubuntu 14.04屏幕分辨率不能设置的问题 在VirtualBOx虚拟机中Ubuntu 14.04设置屏幕分辨率,怎么点都没反应. 方法一:安装与你的Ubuntu-Gu ...
- py-faster-rcnn +cudnn V5
转载自http://blog.csdn.net/u010733679/article/details/52221404,经过实际操作,采用了第二种手动替换代码文件.修改个别函数名的方式,成功编译. - ...
- TP-LINK WR941 DD-WRT刷回OpenWRT及OpenWRT刷回原厂固件
1.DD-Wrt 刷回 OpenWrt A.从官网下载固件: root@TL-DDWRT:/tmp# wget http://downloads.openwrt.org/barrier_breaker ...
- linux下centos的网络连接
- 简要介绍BASE64、MD5、SHA、HMAC几种方法。
加密解密,曾经是我一个毕业设计的重要组件.在工作了多年以后回想当时那个加密.解密算法,实在是太单纯了. 言归正传,这里我们主要描述Java已经实现的一些加密解密算法,最后介绍数字证书. ...
- 关于背景图相对父容器垂直居中问题 —— vertical-align 和 line-height 之间的区别
html css <div class="register-wrapper"> <div class="register"> &l ...