引自: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. 父类virtual和overload,子类reintroduce; overload;

    如果函数在父类中既是虚拟方法也是重载方法,那么:TBase=class(TObject)function DisappearRoutinel: String; overload; virtual;fu ...

  2. Linux源码包安装和脚本安装

    能够先 vi INSTALL 看看安装过程. 1.源码包安装 2.脚本安装

  3. if控制器+循环控制器+计数器,控制接口分支

    但是我不想这么做,接口只想写一次,让循环控制器和if控制器去判断接口,执行我想要的分支.这里遇到了一个问题,if控制器通过什么去判断接下来的分支?我引入了一个计数器的概念.起始值为0,每次循环加1,将 ...

  4. c# 获取网页源代码(支持cookie),最简单代码

    /// /// 获取网页源码 public static string GetHtmls(string url, string referer = "", string cooki ...

  5. python ipython notebook或者 jupyter notebook 的安装

    IPython Notebook使用浏览器作为界面,向后台的IPython服务器发送请求,并显示结果.在浏览器的界面中使用单元(Cell)保存各种信息.Cell有多种类型,经常使用的有表示格式化文本的 ...

  6. Eclipse解决JSP页面乱码问题

    解决方案 1.首先选择 Window  -->  Preferences  -->  General-->  Content Types --> text (点击左边的+,显示 ...

  7. active scaffold

    模板文件路径:/.rvm/gems/ruby-2.2.3/gems/active_scaffold-3.5.3/app/views/active_scaffold_overrides

  8. rails 增删改查

    class InvoicesController < ApplicationController def index @invoices = Invoice.all end def show @ ...

  9. DD DT DL标签

    我们平时常用的是< ul>< li>标签,不过dd.dt标签也蛮不错,特别是发布程序的时候功能模块列表什么的可以使用它来排版. < dl>< /dl>& ...

  10. sql备份命令

    --将SQL脚本赋值给变量 ) set @SqlBackupDataBase=N'BACKUP DATABASE dbname TO DISK = ''E:\DBBackup\dbname-'+ ), ...