2011-12-23 3 views
0

私は、リストアイテムのリストで設定されたリストボックスを持っています。コレクションは完全にフィルタリングされていません。私が達成しようとしているのは、リストボックスをフィルタリングし、2つの異なる基準に基づいてリストボックスを並べ替える機能を作成することです。最初はステータス別にフィルタリングされます。私は、すべての異なるステータスを含むコンボボックスを持っています。私はこのようにこれを達成しました:リストボックスの現在のアイテムリストをフィルタリングするにはどうすればよいですか?

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つの基準のうちの1つに基づいて制約付きリストを使う必要があります。

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

これは最初のtimemを動作しますが、後続の各呼び出しでクラッシュを開始:だから私は、私はちょうどLINQでの並べ替え、それをのItemsSourceオブジェクトをつかむと、その後のようなものをやって、それを再割り当てすることができ考えていました。これが最善の方法だとは思わない。誰かが私にこのアプローチを修正するか、これを行うためのより良い方法を示すことができますか?ありがとう

答えて

1

あなたはCollectionViewSourceが必要です。 See this article詳細については、かなり使いやすいです。

0

エラーは何ですか?それはList<HoldDetails>へのキャストでクラッシュする可能性があります。より一般的なものにキャストしてください(キャストする必要がある場合もあります)。

関連する問題