2011-12-23 2 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); 
      } 
     } 

이것은 콤보 박스 선택 변경 이벤트가 발생했을 때 실행되는 방법이다. 이것은 잘 작동합니다. 내가 혼란스러워지는 곳은 라디오 버튼을 사용하여 3 가지 기준 중 하나를 기반으로 제한 목록을 사용해야합니다. 그래서 나는 종류를 LINQ와 다음이 같은 일을 다시 할당, 난 그냥 ItemsSource 개체를 잡을 수있다 생각했다 :

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

이 처음 timem 작동을하지만, 이후의 각 호와 충돌 시작합니다. 나는 이것에 대해 갈 가장 좋은 방법이라고 생각하지 않습니다. 누군가이 접근법을 고치거나 나에게 더 나은 방법을 보여줄 수 있습니까? 감사합니다

답변

1

당신은 CollectionViewSource가 필요합니다. See this article 자세한 정보는 사용하기가 매우 쉽습니다.

0

무엇이 오류입니까? List<HoldDetails>에 캐스트가 충돌 할 수 있습니다. 좀 더 일반적인 것으로 캐스팅 해보십시오 (캐스팅해야하는 경우조차도).

관련 문제