windows phone CollectionViewSource类的使用

CollectionViewSource类可以根据指定条件为数据源生成视图,可以指定排序,筛选,甚至分组.可以把它生成的视图和数据源之间的关系理解成关系型数据库的视图和表之间的关系.

1.在View中添加一个ListBox和三个按钮. (记得取消DataTemplate的注释啊.....)

 

2.后台代码如下

 
 public class Item
    {
        public string Name { get; set; }
        public string Sex { get; set; }
        public int Age { get; set; }
    }
    public partial class MainPage : PhoneApplicationPage
    {
        // 构造函数
        public MainPage()
        {
            InitializeComponent();
                ObservableCollection<Item> arr = new ObservableCollection<Item>();
                Item item = new Item();
                item.Name ="李雷";
                item.Sex ="男";
                item.Age = 20;
                arr.Add(item);

                item = new Item();
                item.Name = "李淼";
                item.Sex = "女";
                item.Age = 10;
                arr.Add(item);

                item = new Item();
                item.Name = "李明";
                item.Sex = "男";
                item.Age = 20;
                arr.Add(item);

                item = new Item();
                item.Name = "李明明";
                item.Sex = "男";
                item.Age = 10;
                arr.Add(item);

                item = new Item();
                item.Name = "李扶持";
                item.Sex = "男";
                item.Age = 11;
                arr.Add(item);

                item = new Item();
                item.Name = "李来";
                item.Sex = "男";
                item.Age = 11;
                arr.Add(item);

                _source = new CollectionViewSource();
               //初始化CollectionViewSource的数据源
                _source.Source = arr;
                //绑定ListBox的数据源

		//注意listbox绑定CollectionViewSource的View属性
                lb.ItemsSource = Source;
        }
        private CollectionViewSource _source;

        public ICollectionView Source
        {
            get { return _source.View; }
        }

        private void OnButtonAgeAscendingClick(object sender, RoutedEventArgs e)
        {
            //首选我们按年龄升序排序.需要指定一下排序使用的属性名,要根据年龄排序当然使用的是Age属性.
            //然后指定排序方式,ListSortDirection.Ascending,升序排序.

            //清空筛选条件,显示所有数据
             _source.Filter += (o, arg) =>
            {
                arg.Accepted = true;
            };
            _source.SortDescriptions.Add(new SortDescription("Age", ListSortDirection.Ascending));
        }

        private void OnButtonShowGirlClick(object sender, RoutedEventArgs e)
        {
            //指定只显示女生
            //Accepted 这个值指示项是否通过筛选条件
            _source.Filter += (o, arg) =>
                {
                    arg.Accepted = ((Item)arg.Item).Sex == "女";
                };
        }

        private void OnButtonGroupClick(object sender, RoutedEventArgs e)
        {
            //清空筛选条件.
            _source.Filter += (o, arg) =>
            {
                arg.Accepted = true;
            };
            //按年龄进行分组
            _source.GroupDescriptions.Add(new PropertyGroupDescription("Age"));
        }

    }



下一篇文章将讲解:CollectionViewSoure在LongListSelector上的使用.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值