2011-12-23 118 views
0

我有一個列表框填充列表項目的列表。這個系列完全沒有過濾。我試圖完成的是創建過濾列表框並根據兩個不同標準重新排列列表框的功能。第一個按狀態過濾。我有一個包含所有不同狀態的組合框。我已經完成了這樣的事情:如何過濾列表框的當前項目列表?

public void ConstrainList() 
     { 
      if (((Lut_status)cboStatus.SelectedItem).ID != 8) 
      { 
       lbxHoldList.ItemsSource = allHolds.Where(a => a.FullHoldRecord.HoldStatus == ((Lut_status)cboStatus.SelectedItem).ID); 
      } 
      else 
      { 
       lbxHoldList.ItemsSource = allHolds.Where(a => a.FullHoldRecord.HoldStatus != 7); 
      } 
     } 

這是一個在combobox selectionchanged事件觸發時運行的方法。這工作正常。我陷入混亂的地方是我需要根據3個標準​​中的一個使用單選按鈕來使用限制列表。所以,我想我可能只是搶的ItemsSource對象,使用LINQ排序,然後將其重新分配做這樣的事情:

lbxHoldList.ItemsSource = ((List<HoldDetails>)lbxHoldList.ItemsSource).OrderBy(a => a.FullHoldRecord.DateOpened); 

這工作第一timem,而是開始與每個後續調用崩潰。我不覺得這是解決這個問題的最好方法。有人可以幫我解決這個問題,或者告訴我更好的方法嗎?謝謝

回答

1

您需要一個CollectionViewSource。 See this article欲瞭解更多信息,使用非常簡單。

0

什麼是錯誤?它可能會崩潰在劇組List<HoldDetails>。嘗試投射更通用的東西(如果你甚至需要投射)。