1. ObservableCollection 에서 View 를 생성한다.
2. 생성된 View에 Filter를 적용한다.
3. 조건이 변경되면 View를 Refresh해준다.
일반적인 Collection에서 추가해줘야 하는것은...
View 를 구해서 Filter를 적용하는 소스, Filter구현, 조견변경시 Refresh 해주는 코드 1줄.
이렇게 3가지 입니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | #region Students private ObservableCollection<student> items = new ObservableCollection<student>(); public ObservableCollection<student> Items { get { if ( this .items == null ) { this .items = new ObservableCollection<student>(); } var view = CollectionViewSource.GetDefaultView( this .items); if (view.CanFilter) { view.Filter = this .TestFilter; } return this .items; } } private bool TestFilter( object item) { string Item = item as Student; if ( this .SelectedGender == null ) return true ; if ( this .SelectedGender== Item.Gender) return true ; return false ; } #endregion #region SelectedGender private string selectedGender; public string SelectedGender { get { return this .selectedGender; } set { if ( this .selectedGender != value) { this .selectedGender = value; this .RaisePropertyChanged( "SelectedGender" ); CollectionViewSource.GetDefaultView( this .Items).Refresh(); } } } #endregion </student></student></student></student> |