Exemplo n.º 1
0
        private void OnDataSourcesChanged(IEnumerable <IDataSourceViewModel> oldValue,
                                          IEnumerable <IDataSourceViewModel> newValue)
        {
            var old = oldValue as INotifyCollectionChanged;

            if (old != null)
            {
                old.CollectionChanged -= ItemsSourceOnCollectionChanged;
            }

            FilteredItemsSource.Clear();

            if (newValue != null)
            {
                foreach (IDataSourceViewModel model in newValue)
                {
                    if (PassesFilter(model))
                    {
                        FilteredItemsSource.Add(model);
                    }
                }

                var @new = newValue as INotifyCollectionChanged;
                if (@new != null)
                {
                    @new.CollectionChanged += ItemsSourceOnCollectionChanged;
                }
            }
        }
Exemplo n.º 2
0
        private void FilterLoadFunction(object args)
        {
            RoutedEventArgs      routedEventArgs = args as RoutedEventArgs;
            DataGridColumnHeader columnHeader    = (routedEventArgs.OriginalSource as ToggleExtend).GetParent <DataGridColumnHeader>();
            DataGridColumn       dataGridColumn  = columnHeader.Column;

            OptionColumnInfo = new OptionColumnInfo(dataGridColumn, DataGridExtend);

            RoutedEventArgs routedEvent = new RoutedEventArgs(DataGridExtend.InitFilterColumnEvent, OptionColumnInfo.PropertyPath);

            DataGridExtend.RaiseEvent(routedEvent);

            ObservableCollection <FilterKeyValue> filter = new ObservableCollection <FilterKeyValue>();

            if (FilteredItemsSource == null)
            {
                FilteredItemsSource = new ObservableCollection <FilterKeyValue>();
                foreach (var item in DataGridExtend.FilteredItemsSource)
                {
                    if (item is ICateoryFilter cateory)
                    {
                        FilterKeyValue filterKeyValue = new FilterKeyValue();
                        filterKeyValue.DiaplayValue = cateory.FilterColumnValue?.ToString();
                        filterKeyValue.ID           = cateory.ID;
                        FilteredItemsSource.Add(filterKeyValue);
                    }
                }
            }
            else
            {
                foreach (var item in DataGridExtend.FilteredItemsSource)
                {
                    if (item is ICateoryFilter cateory)
                    {
                        if (FilteredItemsSource.Where(p => p.ID == cateory.ID).Count() > 0)
                        {
                            FilterKeyValue filterKeyValue = FilteredItemsSource.Where(p => p.ID == cateory.ID).ToList()[0];
                            filterKeyValue.DiaplayValue = cateory.FilterColumnValue?.ToString();
                        }
                        else
                        {
                            FilterKeyValue filterKeyValue = new FilterKeyValue();
                            filterKeyValue.DiaplayValue = cateory.FilterColumnValue?.ToString();
                            FilteredItemsSource.Add(filterKeyValue);
                        }
                    }
                }
            }


            foreach (var item in FilteredItemsSource)
            {
                if (filter.Where(p => p.DiaplayValue == item.DiaplayValue).ToList().Count <= 0)
                {
                    filter.Add(item);
                }
            }
            CategoryFilter = filter;
        }