2011-07-14 22 views
1

私は2つのCollectionViewを定義したビューモデルを持っています。WPF- ObservableCollectionの複数ビュー

私はナビゲーションとデータ入力/編集に使用しています。 もう1つは、フィルタリング目的に使用し、フォーム上の一部のListviewでフィルタリングを表示することです。

observablecollectionでフィルタリングを適用している間、メインビュー(DataEntry目的で使用される)に影響を与えたくありません。

ありがとうございました!

+3

で、フィルタは' CollectionView'の一部です。コレクション自体に影響を与えずに、コレクションに好きなだけ多くの 'CollectionView'を作成することができます。それが彼らのためのものです。 –

答えて

5

別々のコレクションビューを使用している場合は、コレクションビューを変更しても、他のコレクションビューには影響しません。それはコレクションビューのポイントです - 同じコレクションの独立したビューです。

0

よろしくお願いします。同じ考え方で前進しました。しかし、私がそうしたとき、私はエラー= "別のスレッドがそれを所有しているので、呼び出し側のスレッドはこのオブジェクトにアクセスできません。"したがって、私のろ過動作しません...続きはあなたが `ObservableCollection`にフィルタを適用していないコード -

public ICollectionView Clients { get; set; } //Used for Data-navigation/modification 
    public ListCollectionView CodeView { get; set; } // to be used for filteration purpose on form. 

    string searchText = String.Empty; 
    public string CompanyCodeSearch 
    { 
     get { return searchText; } 
     set 
     { 
      try 
      { 
       searchText = value; 
       OnPropertyChanged("CompanyCodeSearch"); 
       CodeView.Filter = new Predicate<object>(cmFilterData); 
      } 
      catch (Exception ex) 
      { 

      } 
     } 
    } 


    private bool cmFilterData(object item) 
    { 
     bool _filteredData = false; 
     try 
     { 
      var value = (item as cntClient); 
      if (value == null || value.CompanyCode == null) 
       return false; 

      _filteredData = value.CompanyCode.StartsWith(this.CompanyCodeSearch); 
      return _filteredData; 
     } 
     catch (Exception ex) 
     { 
      return false; 
     } 
    } 
関連する問題