簡體   English   中英

如何維護DataGrid的SelectedItems中的順序?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM