private void UpdateFilters() { Log.Debug("Updating filters"); if (_filterSchemes != null) { _filterSchemes.Schemes.CollectionChanged -= OnFilterSchemesCollectionChanged; } _filterSchemes = _filterSchemeManager.FilterSchemes; if (_filterSchemes != null) { _filterSchemes.Schemes.CollectionChanged += OnFilterSchemesCollectionChanged; } var newSchemes = new ObservableCollection <FilterScheme>(); if (RawCollection == null) { _targetType = null; } else { _targetType = CollectionHelper.GetTargetType(RawCollection); if (_targetType != null) { newSchemes.AddRange((from scheme in _filterSchemes.Schemes where scheme.TargetType != null && _targetType.IsAssignableFromEx(scheme.TargetType) select scheme)); } } newSchemes.Insert(0, NoFilterFilter); if (AvailableSchemes == null || !Catel.Collections.CollectionHelper.IsEqualTo(AvailableSchemes, newSchemes)) { AvailableSchemes = newSchemes; var selectedFilter = _filterService.SelectedFilter ?? NoFilterFilter; SelectedFilterScheme = selectedFilter; } }
private void UpdateFilters() { if (_filterSchemes != null) { _filterSchemes.Schemes.CollectionChanged -= OnFilterSchemesCollectionChanged; } _filterSchemes = _filterSchemeManager.FilterSchemes; if (_filterSchemes != null) { _filterSchemes.Schemes.CollectionChanged += OnFilterSchemesCollectionChanged; } var newSchemes = new ObservableCollection <FilterScheme>(); if (RawItems == null) { _targetType = null; } else { _targetType = CollectionHelper.GetTargetType(RawItems); ((ICollection <FilterScheme>)newSchemes).AddRange(from scheme in _filterSchemes.Schemes where _targetType != null && _targetType.IsAssignableFromEx(scheme.TargetType) select scheme); } newSchemes.Insert(0, NoFilterFilter); if (AvailableSchemes == null || !Catel.Collections.CollectionHelper.IsEqualTo(AvailableSchemes, newSchemes)) { AvailableSchemes = newSchemes; SelectedFilterScheme = newSchemes.FirstOrDefault(); } }