引自:http://www.cnblogs.com/Joetao/articles/2168577.html

ICollectionView让MVVM更简单

 

(一)ICollectionView的作用

允许集合具有当前记录管理、自定义排序、筛选和分组这些功能。

(二)如果在MVVM中不用ICollectonView的后果

我们这里以ListBox为例,看看我前面介绍的ListBox制作工具栏

如果我们不用ICollectionView,我们选中ListBox某一项,还必须跟SelectionChanged事件定义一个绑定方法来绑定Command,来处理事件(我们以MvvmLight的处理方式来处理Command),这里我们还要添加MvvmLight中的EventToCommand行为。代码如下

<i:Interaction.Triggers>             <i:EventTrigger EventName="SelectionChanged">                 <cmd:EventToCommand Command="{Binding SelectionChangedCommand, Mode=OneWay}" PassEventArgsToCommand="True"/>             </i:EventTrigger>         </i:Interaction.Triggers>

(三)如果在MVVM中使用ICollecionView

        上面的问题就很简单了,不需要添加SelectionChanged事件定义一个绑定方法来绑定Command,我们只需要使用ICollcetionView实例的CurrentItemj就可以了,是不是简单了很多呢!ICollectionView除了当前选中项,还有分页、分组功能。可以用ListBox,Combox,DataGrid,DataPager等数据项控件(这里可以看下,我用这种方式处理DataGrid的做法)MVVM Light学习笔记(四):实战篇

ICollectionView的更多相关文章

  1. WPF进阶之接口(2):IDisposable,ICollectionView

    废话不多说,进入正题,先来说说IDisposable,看例子(来自MSDN): using System; using System.ComponentModel; // 下面的例子将展示一个实施了I ...

  2. ItemsControl 与 ICollectionView

    ItemsControl base class can automatically interact with ICollectionView classes

  3. WPF平台Grid控件性能比较

    WPF官方发布第一个版本至今已经有10年了, 我们几乎在同时也开始了XAML开发.即使经过多年打造,我们依旧尝试提高:我们真的成功打造了高效灵活的控件吗?我没有在其他地方找到任何关于优秀的WPF表格性 ...

  4. WPF DataGrid常用属性记录

    WPF DataGrid常用属性记录 组件常用方法: BeginEdit:使DataGrid进入编辑状态. CancelEdit:取消DataGrid的编辑状态. CollapseRowGroup:闭 ...

  5. Flex Array 与 ArrayCollection.转自网络

    1.array作为控件使用 FLEX3写法: <mx:Array id="barname"> <mx:String>Flash</mx:String& ...

  6. 重新想象 Windows 8 Store Apps (53) - 绑定: 与 ObservableCollection CollectionViewSource VirtualizedFilesVector VirtualizedItemsVector 绑定

    [源码下载] 重新想象 Windows 8 Store Apps (53) - 绑定: 与 ObservableCollection CollectionViewSource VirtualizedF ...

  7. Sliverlight中PagedCollectionView的使用

    最近项目中一直在和PagedCollectionView这个类打交道.通过它,我们可以以分页的形式自动处理并显示集合中的片段,尤其是和Pager控件配合的时候更能彰显其威力. PagedColecti ...

  8. 有关ListBox

    如何拿到Source:从SQL,从XML file SQL:一个是ObjectDataProvider //用linq方法拿到SQL data,wrap到一个IEnumerable<Custom ...

  9. WPF 视图分组排序

    视图分组排序 效果: 实现步骤: 第一步:为分组做一个标题头,就是效果图中的浅蓝色部分: <DataGrid.GroupStyle>标签部分: <DataGrid x:Name=&q ...

随机推荐

  1. Centos简介(一)

    Centos作为主流的一种Linux操作系统,我们选用Centos,主要是免费,以及稳定. Centos详细介绍,请参考 百度百科

  2. Springboot整合thymeleaf模板

    Thymeleaf是个XML/XHTML/HTML5模板引擎,可以用于Web与非Web应用. Thymeleaf的主要目标在于提供一种可被浏览器正确显示的.格式良好的模板创建方式,因此也可以用作静态建 ...

  3. Python如何实现单例模式?其他23种设计模式python如何实现?

    #使用__metaclass__(元类)的高级python用法 class Singleton2(type): def __init__(cls, name, bases, dict): super( ...

  4. 我的Android进阶之旅------>解决Bug:打开eclipse报错,发现了以元素 'd:skin' 开头的无效内容。此处不应含有子元素。

    今天来打开Eclipse 报错了,错误信息如下: [2015-08-01 09:07:43 - Android SDK] Error when loading the SDK: Error: Erro ...

  5. 关于Java中的toString()方法

    package c07; class ewq{ public String toString() { return "ppppppppp"; } public static voi ...

  6. python更新模块

    pip install -U 模块名 # 这是 python2+ 版本的用法更新模块 pip3 install -U 模块名 # 这是 python3+ 版本的用法更新模块

  7. 17 南宁区域赛 F - The Chosen One 【规律】

    题目链接 https://nanti.jisuanke.com/t/19972 题意 给出一个n 然后将 n 个数 标号为 1 -> n 按顺序排列 每次抽掉 奇数位的数 然后求最后剩下那个数字 ...

  8. python 课堂笔记-for语句

    for i in range(10): print("----------",i) for j in range(10): print("world",j) i ...

  9. flex for循环

    //for ..in 循环中的迭代变量包含属性所保存的值和名称 //for each..in 循环中的迭代变量只包含属性所保存的值,而不包含属性的名称 //对象遍历,可以获取属性名称 private ...

  10. springboot-vue项目前台1