Ejemplo n.º 1
0
        private void UpdatePage(int page, IList <T> results, uint stateWhenRequested)
        {
            if (stateWhenRequested != State)
            {
                // this request may contain out-of-date data, so ignore it
                return;
            }

            bool stillRelevant = _requestedPages.Remove(page);

            if (!stillRelevant)
            {
                return;
            }

            _fetchedPages.Add(page);

            var startIndex = page * _pageSize;

            for (int i = 0; i < results.Count; i++)
            {
                var index       = startIndex + i;
                var virtualItem = _virtualItems[index] ?? (_virtualItems[index] = new VirtualItem <T>(this, index));
                if (virtualItem.Item == null || results[i] == null || !_equalityComparer.Equals(virtualItem.Item, results[i]))
                {
                    virtualItem.SupplyValue(results[i]);
                }
            }

            if (results.Count > 0)
            {
                OnItemsRealized(new ItemsRealizedEventArgs(startIndex, results.Count));
            }
        }
Ejemplo n.º 2
0
 public VirtualItem <T> this[int index]
 {
     get
     {
         RealizeItemRequested(index);
         return(_virtualItems[index] ?? (_virtualItems[index] = new VirtualItem <T>(this, index)));
     }
     set { throw new NotImplementedException(); }
 }
Ejemplo n.º 3
0
        public VirtualItem <T> this[int index]
        {
            get
            {
                if (index >= Count)
                {
                    throw new ArgumentOutOfRangeException("index");
                }

                RealizeItemRequested(index);
                return(_virtualItems[index] ?? (_virtualItems[index] = new VirtualItem <T>(this, index)));
            }
            set { throw new NotImplementedException(); }
        }
Ejemplo n.º 4
0
 public void Insert(int index, VirtualItem <T> item)
 {
     throw new NotImplementedException();
 }
Ejemplo n.º 5
0
 public bool Remove(VirtualItem <T> item)
 {
     throw new NotImplementedException();
 }
Ejemplo n.º 6
0
 public void Add(VirtualItem <T> item)
 {
     throw new NotImplementedException();
 }
Ejemplo n.º 7
0
 public bool Contains(VirtualItem <T> item)
 {
     return(item.Parent == this);
 }
Ejemplo n.º 8
0
 public int IndexOf(VirtualItem <T> item)
 {
     return(item.Index);
 }