Beispiel #1
0
 public PropertyOrderedObservableCollectionViewer(Dispatcher dispatcher, IList <T> viewedCollection,
                                                  IObservableCollectionAccessMediator mediator)
     : base(dispatcher, viewedCollection)
 {
     _mediator = mediator;
     Attach(viewedCollection);
 }
 public ConvertingPropertyOrderedObservableCollectionViewer(Dispatcher dispatcher, IList <TSource> viewedCollection,
                                                            Func <TSource, TItem> converter, IObservableCollectionAccessMediator mediator) : base(dispatcher, viewedCollection)
 {
     _log.Add("Collection constructor called");
     _converter = converter;
     _mediator  = mediator;
     Attach(viewedCollection);
 }
Beispiel #3
0
        /// <summary>
        /// Construct a sorter.
        /// </summary>
        /// <param name="keyGetter">The function that extracts a key from items in the list.</param>
        /// <param name="collection">The collection to be sorted.</param>
        /// <param name="dispatcher">The dispatcher on which move operations can be performed.</param>
        /// <param name="orderCheckTriggerProperties">The names of the properties of items that cause ordering to be checked when they change.</param>
        /// <param name="collectionAccessMediator">An object capable of preventing concurrent access to the target collection while the sorter performs the initial sort.</param>
        public CollectionAutoSorter(Func <TItem, TKey> keyGetter, ObservableCollection <TItem> collection, Dispatcher dispatcher, IEnumerable <string> orderCheckTriggerProperties, IObservableCollectionAccessMediator collectionAccessMediator, bool orderDescending)
        {
            _keyGetter  = keyGetter;
            _collection = collection;
            _dispatcher = dispatcher;

            _collection.CollectionChanged += HandleCollectionChanged;
            _order = new CollectionOrder <TItem, TKey>(keyGetter, collection, dispatcher, orderCheckTriggerProperties, orderDescending);
            _order.LoadKeysAndTriggerArrange(collection, collectionAccessMediator);
        }
Beispiel #4
0
 public abstract void LoadKeysAndTriggerArrange(INotifyCollectionChanged target, IObservableCollectionAccessMediator mediator);
Beispiel #5
0
        public override void LoadKeysAndTriggerArrange(INotifyCollectionChanged target, IObservableCollectionAccessMediator mediator)
        {
            lock (_lock)
            {
                if (target != null)
                {
                    _list = target as IList <T>;
                    if (_list == null)
                    {
                        throw new NonListMonitoringIsNotSupportedException();
                    }
                    mediator.SafeAccessCollection(target, GetKeys);

                    var sorter = new Func <Func <ItemKey, TKey>, List <ItemKey> >(
                        s => _orderDescending
                            ? _keys.OrderByDescending(s).ToList()
                            : _keys.OrderBy(s).ToList());
                    _keys = sorter(v => v.Key);
                    _orderDispatcher.BeginInvoke(new Action(ArrangeItems));
                }
                else
                {
                    _keys = new List <ItemKey>();
                    _orderDispatcher.BeginInvoke(new Action(ArrangeItems));
                }
            }
        }
 public void SetMediator(IObservableCollectionAccessMediator mediator)
 {
     _log.Add("Mediator set to type {0}", mediator.GetType());
     _mediator = mediator;
 }
Beispiel #7
0
 public void SetMediator(IObservableCollectionAccessMediator mediator)
 {
     _mediator = mediator;
 }