WPF 数据绑定 定制一个集合的视图
2011-09-03 23:05
477 查看
无论何时绑定一个集合,都会有一个默认的视图隐式被插入到源对象和目标对象之间,该视图(实现ICollectionView接口的对象),存储当前信息。
排序
分组
过滤
排序
//排序 private void SortHelper(string propertyName) { //返回给定源的默认视图 //ICollectionView view = CollectionViewSource.GetDefaultView(this.FindResource("photoList"); ICollectionView view = CollectionViewSource.GetDefaultView(pl); //ICollectionView的SortDescriptions属性来控制视图排序 if (view.SortDescriptions.Count > 0 && view.SortDescriptions[0].PropertyName == propertyName && view.SortDescriptions[0].Direction == ListSortDirection.Ascending) { view.SortDescriptions.Clear(); view.SortDescriptions.Add(new SortDescription(propertyName, ListSortDirection.Descending)); } else { view.SortDescriptions.Clear(); view.SortDescriptions.Add(new SortDescription(propertyName, ListSortDirection.Ascending)); } } //调用 SortHelper("Name");
分组
//转换时间为指定格式 class DateTimeToDateConverter : IValueConverter { #region IValueConverter 成员 public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { return ((DateTime)value).ToString("dd/MM/yyyy"); } public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { throw new NotImplementedException(); } #endregion } //分组 private void GroupHelper(string propertyName) { ICollectionView view = CollectionViewSource.GetDefaultView(pl); //ICollectionView的GroupDescriptions属性来控制视图排序 view.GroupDescriptions.Clear(); //用指定属性名,转换器分组 view.GroupDescriptions.Add(new PropertyGroupDescription(propertyName, new DateTimeToDateConverter())); } //调用,按DateTime属性分组 GroupHelper("DateTime");
<ListBox x:Name="listBox1" SelectedValuePath="Name" ItemsSource="{Binding}" IsSynchronizedWithCurrentItem="True" SelectionChanged="listBox2_SelectionChanged"> <ListBox.GroupStyle> <GroupStyle> <!-- 定义分组头外观 --> <GroupStyle.HeaderTemplate> <!-- 数据模板会有一特殊CollectionViewGroup对象数据上下文 --> <DataTemplate> <Border BorderBrush="Black" BorderThickness="1"> <!-- 该上下文包含一Name属性表示每个分组的名称,需要绑定 --> <TextBlock Text="{Binding Path=Name}" FontWeight="Bold"/> </Border> </DataTemplate> </GroupStyle.HeaderTemplate> </GroupStyle> </ListBox.GroupStyle> </ListBox>
过滤
//过滤 private void FilterHelper() { ICollectionView view = CollectionViewSource.GetDefaultView(pl); //ICollectionView的Filter委托对象,设置后会马上回调 //该委托的工作就是决定某项的显示(返回true)隐藏(返回false) //要删除该过滤,只需Filter = null view.Filter = delegate(object o) { return (DateTime.Now - (o as PhotoModel).DateTime).Days <= 1; }; } //调用 FilterHelper();
相关文章推荐
- WPF 数据绑定 定制一个集合的视图 导航
- WPF 数据绑定 定制一个集合的视图 数据提供程序
- WPF快速指导13:数据绑定之集合绑定之视图(排序、过滤、分组)
- WPF 绑定以基础数据类型为集合的无字段名的数据源
- WPF笔记(4.3 集合数据绑定)——Data Binding
- wpf combobox数据绑定并添加一个额外的选项
- WPF Treeview 无限分级绑定集合数据
- WPF的数据绑定(四)绑定到集合
- 201507221403_《backbone之一——新建模型和集合、实例化模型、模型上监听事件的方法、模型设置和获取后台数据、配置理由方法、视图绑定事件的方法、绑定模型等》
- Wpf ListBox数据绑定实例1--绑定字典集合
- Xaml中如何对ComboBox绑定一个数据集合
- 数据绑定之集合绑定之视图(排序、过滤、分组)
- WPF入门(七)绑定一个集合
- WPF常用数据绑定控件集合
- 数据绑定时出现"这将导致集合中的两个绑定绑定到同一个属性"错误.
- WPF简单的集合绑定数据
- WPF 中DataGrid控件绑定数据的一个例子
- Wpf ListBox数据绑定实例1--绑定字典集合
- WPF一个列表(ListBox)呈现多个数据集合
- WPF入门(七)绑定一个集合