我有2个ListBox,它们绑定到相同的源照片(这是照片的集合)
我知道有一种方法可以获取源的CollectionView(即Photos),然后对此CollectionView进行任何更改(例如排序)都会影响到该源的所有目标。
我无法理解的是为什么当我更改一个ListBox的SortDescriptions时,我也会看到另一个ListBox的更改。
myListBox1.Items.SortDescriptions.Add(new SortDescription(“ProperyName”,ListDirection.Ascending));
使myListBox1和myListBox2都被改变..
任何想法? 谢谢!
答案 0 :(得分:4)
来自MSDN:
所有集合都有默认的CollectionView。 WPF总是绑定到 查看而不是集合。如果直接绑定到集合, WPF实际上绑定到该集合的默认视图。这个 默认视图由集合的所有绑定共享,这会导致 所有直接绑定到集合以共享排序,过滤, 组和一个默认视图的当前项特征。 或者,您可以在Extensible中创建集合的视图 应用程序标记语言(XAML)或使用的代码 CollectionViewSource类,并将您的控件绑定到该视图。
您可以create a CollectionViewSource in XAML作为两个资源,并将ListBox绑定到这些视图,而不是直接绑定到集合。