私は2つのCollectionViewを定義したビューモデルを持っています。WPF- ObservableCollectionの複数ビュー
私はナビゲーションとデータ入力/編集に使用しています。 もう1つは、フィルタリング目的に使用し、フォーム上の一部のListviewでフィルタリングを表示することです。
observablecollectionでフィルタリングを適用している間、メインビュー(DataEntry目的で使用される)に影響を与えたくありません。
ありがとうございました!
私は2つのCollectionViewを定義したビューモデルを持っています。WPF- ObservableCollectionの複数ビュー
私はナビゲーションとデータ入力/編集に使用しています。 もう1つは、フィルタリング目的に使用し、フォーム上の一部のListviewでフィルタリングを表示することです。
observablecollectionでフィルタリングを適用している間、メインビュー(DataEntry目的で使用される)に影響を与えたくありません。
ありがとうございました!
別々のコレクションビューを使用している場合は、コレクションビューを変更しても、他のコレクションビューには影響しません。それはコレクションビューのポイントです - 同じコレクションの独立したビューです。
よろしくお願いします。同じ考え方で前進しました。しかし、私がそうしたとき、私はエラー= "別のスレッドがそれを所有しているので、呼び出し側のスレッドはこのオブジェクトにアクセスできません。"したがって、私のろ過動作しません...続きはあなたが `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;
}
}
で、フィルタは' CollectionView'の一部です。コレクション自体に影響を与えずに、コレクションに好きなだけ多くの 'CollectionView'を作成することができます。それが彼らのためのものです。 –