내가 아는거/WPF2012. 12. 4. 11:08

1. ObservableCollection 에서 View 를 생성한다.

2. 생성된 View에 Filter를 적용한다.

3. 조건이 변경되면 View를 Refresh해준다.


일반적인 Collection에서 추가해줘야 하는것은...

View 를 구해서 Filter를 적용하는 소스, Filter구현, 조견변경시 Refresh 해주는 코드 1줄.

이렇게 3가지 입니다.


#region Students   
private ObservableCollection items = new ObservableCollection();
public ObservableCollection Items       
{            
    get 
    {
        if (this.items == null)  
        {
            this.items = new ObservableCollection();                
        }
        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



Posted by zinzza