在分隔的ListBox中编辑集合

时间:2012-02-19 11:40:30

标签: wpf inotifypropertychanged itemssource checkedlistbox

我有这样的源元素:

var collection = new ObservableCollection<SourceItems>(source);

source实现 INotifyPropertyChanged

我需要使用规则在CheckListBoxes(带有来自WPFToolKit的checkBoxes的listBox)中编辑和查看此集合:

  • 每个CheckListBox必须按集合字段之一进行排序。集合具有每个CheckListBox的订单字段。例如 - ItemOrder。
  • 一个listBox中的可见元素取决于来自其他列表的已检查项目。

每个CheckListBox都有itemsSource

checkListBox1.ItemsSource=collection;

所以,如果我检查一个listBox中的项目,我必须只看到其他项目中的已检查项目。 并且每个listBox必须按源的字段之一

排序
  • listBox1 by field orderItem

  • listBox2 by field orderVisibleItem,依此类推。

用户可以移动每个listBox中的元素,但不得影响其他列表中的排序。

我尝试为每个ListBox创建 CollectionViewSource 。但是当我对它进行排序时,它会互相排斥。

Linq for filtering and sortnig也不起作用,因为更改没有动态更新。

有没有最好的方法来创建这样的功能?

1 个答案:

答案 0 :(得分:0)

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

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