예제 #1
0
        private void InitColumnHeader(object args)
        {
            RoutedEventArgs      routedEventArgs = args as RoutedEventArgs;
            DataGridColumnHeader columnHeader    = (routedEventArgs.OriginalSource as Grid).GetParent <DataGridColumnHeader>();

            if (columnHeader == null || columnHeader.Column == null)
            {
                return;
            }
            foreach (var column in this.Columns)
            {
                if (columnHeader.Column == column)
                {
                    bool isFilter = (bool)column.GetValue(ColumnConfiguration.CanClassFilterProperty);
                    DataGridColumnHeaderFilter headerFilter = new DataGridColumnHeaderFilter();
                    headerFilter.DataGridExtend = this;
                    headerFilter.FilterType     = FilterType;

                    headerFilter.FilterFinsh += HeaderFilter_FilterFinsh;
                    headerFilter.IsVisiable   = isFilter;
                    columnHeader.Tag          = headerFilter;
                    DataGridColumnHeaders.Add(columnHeader);
                }
            }
        }
예제 #2
0
        private void HeaderFilter_FilterFinsh(object sender, RoutedEventArgs e)
        {
            Predicate <object> predicate = null;

            foreach (var item in DataGridColumnHeaders)
            {
                DataGridColumnHeaderFilter dataGridColumnHeaderFilter = item.Tag as DataGridColumnHeaderFilter;
                if (dataGridColumnHeaderFilter.Predicate == null)
                {
                    continue;
                }
                if (predicate == null)
                {
                    predicate = dataGridColumnHeaderFilter.Predicate;
                }
                else
                {
                    predicate = predicate.Or(dataGridColumnHeaderFilter.Predicate);
                }
            }
            ListCollectionView view = CollectionViewSource.GetDefaultView(this.ItemsSource) as ListCollectionView;

            if (view != null && view.IsEditingItem)
            {
                view.CommitEdit();
            }
            if (view != null && view.IsAddingNew)
            {
                view.CommitNew();
            }
            if (CollectionView != null)
            {
                try
                {
                    CollectionView.Filter = predicate;
                }
                catch
                {
                }
            }
        }