代码之家  ›  专栏  ›  技术社区  ›  Ben Gribaudo

itemscontrol-将控件和集合的排序顺序绑定在一起

  •  0
  • Ben Gribaudo  · 技术社区  · 15 年前

    有什么方法可以把 ItemsControl (像 ListView DataGrid )对已排序的集合,这样:

    • 每当通过代码调用集合时, 项目控制 自动反映新的排序顺序,
    • 无论何时, 项目控制 是排序的,它对集合重新排序?

    谢谢您,

    3 回复  |  直到 15 年前
        1
  •  0
  •   ChrisNel52    15 年前

    您需要使用

    CollectionViewSource.GetDefaultView() 
    

    方法获取ObservableCollection的默认视图并对其应用排序。

    例如,下面我将按书名对名为“authors”的ObservableCollection进行排序。

            ObservableCollection<Author> authors = new ObservableCollection<Author>();
            authors = PopulateCollection();
    
            // Sort by BookTitle
            System.ComponentModel.ICollectionView colView;
            colView = CollectionViewSource.GetDefaultView(authors);
            colView.SortDescriptions.Add(new System.ComponentModel.SortDescription("BookTitle", ListSortDirection.Descending));
    
        2
  •  0
  •   Chen Kinnrot    15 年前

    尝试在bining上定义这两个属性: IsSynchronizedWithCurrentItem=true bindsdirectlyToSource=true

    我没有试过这个,但它可能会起作用。

        3
  •  0
  •   cozykozy    15 年前

    把你的物品放入一个可观察的收藏中,然后绑定到可观察的收藏中就可以了。对ObservableCollection进行的任何排序都应该“转换”到UI层。