Beispiel #1
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));
                }
            }
        }