C# 不同分组的ICollectionView是否仍能在控件之间同步?

C# 不同分组的ICollectionView是否仍能在控件之间同步?,c#,wpf,C#,Wpf,假设我有一个体育运动员的内存集合,包括他们就读的大学、他们所踢的位置和当前的球队,绑定到3个不同的控件(列表框),以便按这3个不同的分组浏览不同的运动员 是否可以将3个控件与不同的ICollectionView同步,以便其中一个控件中的选择与其他控件同步?或者,只有当它们都绑定到同一个ICollectionView实例时,这才可能实现吗?我已经将3个列表框设置为IsSynchronizedWithCurrentItem=“true”,但我怀疑这仅在它们使用相同的ICollectionView时有

假设我有一个体育运动员的内存集合,包括他们就读的大学、他们所踢的位置和当前的球队,绑定到3个不同的控件(列表框),以便按这3个不同的分组浏览不同的运动员

是否可以将3个控件与不同的ICollectionView同步,以便其中一个控件中的选择与其他控件同步?或者,只有当它们都绑定到同一个ICollectionView实例时,这才可能实现吗?我已经将3个列表框设置为IsSynchronizedWithCurrentItem=“true”,但我怀疑这仅在它们使用相同的ICollectionView时有效

这就是我在代码中所做的:

        ICollectionView collegeView = new ListCollectionView(playerDatabase);
        collegeView.GroupDescriptions.Add(new PropertyGroupDescription("CollegeName"));
        collegeView.SortDescriptions.Add(new SortDescription("CollegeName", ListSortDirection.Ascending));
        collegeView.SortDescriptions.Add(new SortDescription("FirstName", ListSortDirection.Ascending));
        lstCollege.ItemsSource = collegeView;

        ICollectionView positionView = new ListCollectionView(playerDatabase);
        positionView.GroupDescriptions.Add(new PropertyGroupDescription("PositionCode", new NFLPositionGrouper()));
        positionView.SortDescriptions.Add(new SortDescription("PositionName", ListSortDirection.Ascending));
        positionView.SortDescriptions.Add(new SortDescription("FirstName", ListSortDirection.Ascending));
playerDatabase变量来自LINQ to实体查询,该查询投影匿名类型


顺便说一句,原始数据库中大约有2000行-看起来初始界面需要明显的1秒来绘制初始界面-有没有其他方法可以更有效地完成此操作?只要我不替换ControlTemplate并因此移除VirtualzingStackPanel(但是我有ItemTemplate和HeaderTemplate的数据模板)我不会无意中禁用项目虚拟化,是吗?

CollectionView与数据库中的视图非常相似,因为它类似于实际数据的实时快照,您可以对其进行分组、排序、筛选等。如果您使用3个单独的CollectionView,我认为在这种情况下,
IsSynchronizedWithCurrentItem
无法工作,因为我认为这可能取决于单个,
ICollectionView


但是,没有理由不能在ViewModel中创建表示CurrentPlayer的属性(是否使用MVVM?如果不是,我强烈建议使用它),并将所有列表框的
SelectedItem
属性绑定到此属性(确保该属性引发
NotifyPropertyChanged
事件).

在这个例子中,我没有使用虚拟机-我只是想在真空中解决这个问题,但这是一个非常好的建议-我喜欢它!我只是想知道我是否使用了错误的视图对象