Xaml 在Windows8中过滤GridView
我目前有一个GridView,其中ItemsSource设置为ObservableCollection。对底层数据的更新会反映在UI中,而无需我的任何努力。事情进展顺利Xaml 在Windows8中过滤GridView,xaml,windows-8,winrt-xaml,Xaml,Windows 8,Winrt Xaml,我目前有一个GridView,其中ItemsSource设置为ObservableCollection。对底层数据的更新会反映在UI中,而无需我的任何努力。事情进展顺利 将过滤器应用于ObservableCollection以便只显示某些项目的最干净的方法是什么?理想情况下,我不想从ObservaleCollection中实际删除项目,也不想维护两个不同的集合,因为这将使保持同步更具挑战性。CollectionViewSource看起来很有希望,但Windows应用商店应用程序实现似乎缺少过滤功
将过滤器应用于ObservableCollection以便只显示某些项目的最干净的方法是什么?理想情况下,我不想从ObservaleCollection中实际删除项目,也不想维护两个不同的集合,因为这将使保持同步更具挑战性。CollectionViewSource看起来很有希望,但Windows应用商店应用程序实现似乎缺少过滤功能(为什么是MS???)如果您使用的是某种MVVM模板,则使用LINQ:
this.DefaultViewModel["GreaterThan10Items"] = originalList.Where(c => c.SomeProperty > 10)
.Select(c => new {c.SomeProperty, c.OtherProperty});
或者可能:
this.DefaultViewModel["Children"] = from query in originalList
where query.age <10
select new Person
{
age= query.age,
name = query.Name
};
this.DefaultViewModel[“Children”]=来自OriginallList中的查询
where query.age我刚刚在自己的C#+XAML Windows 8应用程序中处理完同样的问题。这三个开源项目中的任何一个都将为您提供您想要的功能:、和
CollectionViewSource在Windows 8中不包含过滤功能也是不错的,因为最好还是将这些功能放在视图模型中。这样做的主要优点是,打包为可移植类库(PCL),视图模型(包括过滤)将可移植到WPF、Silverlight和Windows8项目中
尽管上述三个开源项目对我来说很有趣,但我还是在自己的基础上完成了这项任务。我的框架已经支持排序,所以过滤是一种自然的添加。在使用我上个月实现的时,添加它很容易。我还没有上传包含过滤的MVVM框架的最新版本。如果以上三个开源项目都不适合您,请告诉我,这样我就可以更快地上传。您可以使用我的库。例如,如果您希望按特定类型订单过滤bing到GridView:
GridView.ItemsSource=OrdersObservableCollection
.Filtering(o=>o.Type==OrdersFilter.SelectedType)
现在,当OrdersObservableCollection更改或Order.Type属性更改时,GridView会自动刷新。确保Order类实现INotifyPropertyChanged