[英]How to maintain order in SelectedItems of DataGrid?
所以我正在使用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);
}
}
我使用了“包含”功能,因為我實際上沒有很多東西,因此它並不是真正的性能問題,但是如果您這樣做了,您可以使用詞典,這樣性能會更好。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.