WPF - 更改一个ListBox的Items顺序会影响另一个ListBox

时间:2011-07-15 16:03:50

标签: wpf collections binding

我有2个ListBox,它们绑定到相同的源照片(这是照片的集合)

我知道有一种方法可以获取源的CollectionView(即Photos),然后对此CollectionView进行任何更改(例如排序)都会影响到该源的所有目标。

我无法理解的是为什么当我更改一个ListBox的SortDescriptions时,我也会看到另一个ListBox的更改。

myListBox1.Items.SortDescriptions.Add(new SortDescription(“ProperyName”,ListDirection.Ascending));

使myListBox1和myListBox2都被改变..

任何想法? 谢谢!

1 个答案:

答案 0 :(得分:4)

来自MSDN

  

所有集合都有默认的CollectionView。 WPF总是绑定到   查看而不是集合。如果直接绑定到集合,   WPF实际上绑定到该集合的默认视图。这个   默认视图由​​集合的所有绑定共享,这会导致   所有直接绑定到集合以共享排序,过滤,   组和一个默认视图的当前项特征。   或者,您可以在Extensible中创建集合的视图   应用程序标记语言(XAML)或使用的代码   CollectionViewSource类,并将您的控件绑定到该视图。

您可以create a CollectionViewSource in XAML作为两个资源,并将ListBox绑定到这些视图,而不是直接绑定到集合。