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

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>



Posted by zinzza