Skip to content

Files

Latest commit

 

History

History

FilterChips

Chip Filters for a CollectionView

This example illustrates how to add chips with predefined filters (and apply pre-defined filters against data displayed in the DevExpress .NET MAUI CollectionView control).

Related Controls and Their Properties:

Implementation Details

  • This project uses the FilterChipGroup control to display chips with predefined filters. The FilterChipGroup.ItemsSource property is bound to the PredefinedFilters collection. Each item in this collection contains a value and corresponding display text. The value is specified using Criteria Language Syntax.

    <dxe:FilterChipGroup ItemsSource="{Binding PredefinedFilters}" SelectedItems="{Binding SelectedFilters, Mode=TwoWay}"
    public class MainViewModel : BindableBase {
        string filter;
        public ObservableCollection<FilterItem> PredefinedFilters {
            get;
            set;
        }
        public BindingList<FilterItem> SelectedFilters {
            get;
            set;
        }
        public MainViewModel() {
            SelectedFilters = new BindingList<FilterItem>();
            PredefinedFilters = new ObservableCollection<FilterItem>() {
                new FilterItem(){ DisplayText= "Today", Filter = "IsOutlookIntervalToday([CreatedDate])" },
                new FilterItem(){ DisplayText= "Last Week", Filter = "IsThisWeek([CreatedDate])" },
                new FilterItem(){ DisplayText= "Drafts", Filter = "[IsDraft] == True" },
                new FilterItem(){ DisplayText= "< $1000", Filter = "[Price] < 1000" },
                new FilterItem(){ DisplayText= "> $4000", Filter = "[Price] > 4000" },
            };
    }
  • The FilterChipGroup.SelectedItems property returns a BindingList. You can handle the BindingList.ListChanged event to update a filter condition. In the event handler, create the filter string and pass it to the FilterString property.

    <dxcv:DXCollectionView FilterString="{Binding Filter, Mode=TwoWay}" ... 
    public class MainViewModel : BindableBase 
        string filter;
        public BindingList<FilterItem> SelectedFilters {
            get;
            set;
        }
        public string Filter {
            get {
                return filter;
            }
            set {
                filter = value;
                RaisePropertiesChanged();
            }
        }
        private void SelectedFiltersChanged(object sender, ListChangedEventArgs e) {
            if (SelectedFilters.Count > 0)
                Filter = String.Join(" AND ", SelectedFilters.Select(f => f.Filter));
            else
                Filter = string.Empty;
        }
    }