protected override void OnActivate() { RDCGroups = new ObservableCollection <RDCGroup>(_rdcGroupManager.GetGroups()); RDCGroups.Insert(0, new RDCGroup() { Name = "All", Id = Guid.NewGuid() }); RDCGroups.Insert(1, new RDCGroup() { Name = "None", Id = Guid.Empty }); var rdcs = _rdcInstanceManager.GetRDCs() .OrderBy(x => _rdcGroups.FirstOrDefault(y => y.Id == x.GroupId)?.Name ?? "None"); RDCs = new ObservableCollection <RDC>(rdcs); SelectedRDCGroup = RDCGroups.First(); _groupView = CollectionViewSource.GetDefaultView(_rdcs); _groupView.GroupDescriptions.Add(new PropertyGroupDescription("GroupId", new GroupIdToNameConverter(_rdcGroups))); _groupView.Filter += (item) => { RDC rdc = item as RDC; if (!_rdcGroups.Any(x => x.Id == rdc.GroupId)) { rdc.GroupId = Guid.Empty; } if ((rdc.GroupId == Guid.Empty && SelectedRDCGroup.Name == "None") || SelectedRDCGroup.Name == "All" || rdc.GroupId == SelectedRDCGroup.Id) { return(true); } return(false); }; }