如何维护数据网格的选定项中的顺序
本文关键字:顺序 网格 数据网 何维护 维护 数据 | 更新日期: 2023-09-27 18:36:48
所以我正在使用C#/WPF,我有一个DataGrid
。 我需要允许用户在DataGrid
中选择多个项目。 但是,我注意到SelectedItems
的顺序取决于用户选择它们的方向或顺序。 例如,如果它们从下往上拖动,则项目基本上与它们在DataGrid
中的顺序相反。 我需要这些项目以与DataGrid
相同的顺序出现在SelectedItems
集合中。
以下是我正在做的事情的示例:
DataGrid grid = DataGridWorkoutTemplate;
if (grid.SelectedItems.Count > 1)
{
List<IntervalDisplay> source = (List<IntervalDisplay>)grid.ItemsSource;
List<IntervalDisplay> newSource = new List<IntervalDisplay>(source);
foreach (IntervalDisplay row in grid.SelectedItems)
{
newSource.Add(row);
}
grid.ItemsSource = newSource;
如您所见,我所做的只是将项目SelectedItems
并再次添加到ItemsSource
的末尾(在本例中为 List),但我需要它们始终按原始DataGrid
顺序添加。
如果有更好的方法可以做到这一点,或者您知道如何使用它使用原始订单,请告诉我。 似乎SelectedItems
没有任何来自DataGrid
的固有索引,只有按选择顺序排列的项目索引。 而且我真的不想仅仅为了处理此索引而修改基类。
谢谢!
对延迟的回答表示歉意,但希望它对未来的读者有所帮助。
我刚刚浏览了 DataGrid 中的所有项目,并在选择了它们时手动添加它们。
var selectedList = new ObservableCollection<object>();
foreach (var item in dataGrid.Items)
{
if (dataGrid.SelectedItems.Contains(item))
{
selectedList.Add(item);
}
}
我使用了"包含"功能,因为我实际上没有很多项目,所以它不是真正的性能影响,但如果你这样做 - 你可以只使用字典,性能会好得多。