Wpf 在单独的列表框中编辑集合

Wpf 在单独的列表框中编辑集合,wpf,inotifypropertychanged,itemssource,checkedlistbox,Wpf,Inotifypropertychanged,Itemssource,Checkedlistbox,我有这样的源元素: var集合=新的observeCollection(源) 源实现了INotifyPropertyChanged 我需要使用以下规则在复选框(带有WPFToolKit复选框的列表框)中编辑和查看此集合: 每个复选框必须按集合的某个字段进行排序。集合中的每个复选框都有order字段。例如,ItemOrder 一个列表框中的可见元素取决于另一个列表框中的选中项 每个复选框都有itemsSource checkListBox1.ItemsSource=collection; 所

我有这样的源元素:

var集合=新的observeCollection(源)

源实现了INotifyPropertyChanged

我需要使用以下规则在复选框(带有WPFToolKit复选框的列表框)中编辑和查看此集合:

  • 每个复选框必须按集合的某个字段进行排序。集合中的每个复选框都有order字段。例如,ItemOrder
  • 一个列表框中的可见元素取决于另一个列表框中的选中项
每个复选框都有itemsSource

checkListBox1.ItemsSource=collection;
所以,如果我选中一个列表框中的项目,我必须在另一个列表框中只看到选中的项目。 每个列表框必须按源字段中的一个进行排序

  • 按字段排序的listBox1 orderItem

  • 按字段orderVisibleItem列出listBox2,依此类推

用户可以移动每个列表框中的元素,并且不能影响其他列表框中的排序

我尝试为每个列表框创建CollectionViewSource。但当我对其中一个进行排序时,它会对彼此进行排序

Linq for filtering和sortnig也不起作用,因为更改不会动态更新


有没有创建此类功能的最佳方法?

您应该使用
CollectionViewSource
。 我猜您使用了
CollectionViewSource.GetDefaultView(..)
?应为集合创建两个新视图:

CollectionViewSource cvs = new CollectionViewSource() { Source = TheCollection };