2013-07-08 5 views
0

은 내가 CollectionViewSource을 만들었습니다 그룹화가 완벽하게 작동합니다. 그러나 모든 항목 (그룹 해제 됨)을 포함하는 추가 Tab을 추가하려고했습니다.CollectionViewSource 그룹화 "모든 항목"

이렇게하는 간단한 mvvm 접근 방식이 있습니까? 어떤 도움이라도 대단히 감사하겠습니다.

답변

1

사용자 지정 CollectionViewGroup을 사용하여 사용자 지정 ListCollectionView를 만드는 것이 기본 개념입니다. 아래는 그 예입니다.

public class CustomGroupListCollectionView : ListCollectionView 
{ 
    private readonly CustomGroup _allGroup; 

    public CustomGroupListCollectionView(IList list) 
     : base(list) 
    { 
     _allGroup = new CustomGroup("All"); 
     foreach (var item in list) 
     { 
      _allGroup.AddItem(item); 
     } 
    } 

    public override ReadOnlyObservableCollection<object> Groups 
    { 
     get 
     { 
      var group = new ObservableCollection<object>(base.Groups.ToList()); 
      group.Add(_allGroup); 
      return new ReadOnlyObservableCollection<object>(group); 
     } 
    } 
} 

public class CustomGroup : CollectionViewGroup 
{ 
    public CustomGroup(object name) 
     : base(name) 
    { 
    } 

    public void AddItem(object item) 
    { 
     ProtectedItems.Add(item); 
    } 

    public override bool IsBottomLevel 
    { 
     get { return true; } 
    } 
} 
+0

완벽하게 작동합니다. 고맙습니다! – gleng

+0

Bill, (xaml에서) 기본 정렬을 어떻게 받고 새 그룹 (모든 항목)에 적용합니까? – gleng

+0

아하,이게 내가 가진 기본적인 생각이야. 정렬 및 필터링과 같은 더 많은 기능을 추가하려면 더 많은 고통이 따릅니다. 나는 그렇게하지 않았다. SortDescriptions의 CollectionChanged 이벤트를 수신 한 다음 이벤트 처리기에서 _allGroup을 수동으로 정렬 할 수 있습니다. –