示例#1
0
        public virtual void SourceItemChanged(object sender, PropertyChangedEventArgs e)
        {
            var item = (T)sender;

            var checkItem = ListHelper.CheckItem(item, query);

            if (checkItem)
            {
                if (query.IsGlobalParameter(e.PropertyName))
                {
                    UpdateFilter();
                }
                else
                {
                    int index = IndexOf(item);
                    if (index < 0)
                    {
                        base.Add(item);
                    }
                    else
                    {
                        base.OnItemPropertyChanged(item, index, e);
                    }
                }
            }
            else
            {
                int index = IndexOf(item);
                if (index >= 0)
                {
                    Remove(item, index);
                }
            }
        }
示例#2
0
        public virtual void SourceListChanged(object sender, NotifyCollectionChangedEventArgs e)
        {
            T newItem = e.NewItems == null ? default(T) : e.NewItems.TypeOf <T>().FirstOrDefault();
            T oldItem = e.OldItems == null ? default(T) : e.OldItems.TypeOf <T>().FirstOrDefault();

            switch (e.Action)
            {
            case NotifyCollectionChangedAction.Reset:
                UpdateFilter();
                break;

            case NotifyCollectionChangedAction.Move:
                if (newItem != null)
                {
                    SourceItemChanged(newItem, new PropertyChangedEventArgs(string.Empty));
                }
                break;

            case NotifyCollectionChangedAction.Replace:
                if (oldItem != null)
                {
                    Remove(oldItem);
                }
                goto case NotifyCollectionChangedAction.Add;

            case NotifyCollectionChangedAction.Remove:
                if (oldItem != null)
                {
                    Remove(oldItem);
                }
                break;

            case NotifyCollectionChangedAction.Add:
                if (newItem != null && ListHelper.CheckItem(newItem, query))
                {
                    if (!query.IsEnabled && comparer == null)
                    {
                        base.Add(newItem);
                    }
                    else
                    {
                        base.Add(newItem);
                    }
                }
                break;
            }
        }
示例#3
0
 public bool CheckItem(object item, object typedValue, CompareType comparer, IComparer comparision)
 {
     return(ListHelper.CheckItem(GetValue(item), typedValue, comparer, comparision));
 }