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); }
/// <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); }
public abstract void LoadKeysAndTriggerArrange(INotifyCollectionChanged target, IObservableCollectionAccessMediator mediator);
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; }
public void SetMediator(IObservableCollectionAccessMediator mediator) { _mediator = mediator; }