假设我有一个运动运动员的内存集合,包括他们就读的大学、他们的位置和当前球队,绑定到 3 个不同的控件(ListBoxes),以便按这 3 个不同的分组浏览不同的运动员
是否可以将 3 个控件与不同的 ICollectionView 同步,以便一个选择与其他选择同步?或者只有当它们都绑定到同一个 ICollectionView 实例时才有可能?我已经设置了 3 个 ListBoxes 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 Entity 查询。
顺便说一句,原始数据库中大约有 2000 行 - 初始界面似乎需要明显的 1 秒才能开始绘制自己是否有其他方法可以更有效地做到这一点?只要我不替换 ControlTemplate 并因此删除 VirtualizingStackPanel(但我确实有 ItemTemplate 和 HeaderTemplate 的 DataTemplates),我就不会无意中禁用项目虚拟化吗?