private void SetCurrent(VirtualListItem <T> newItem, int newPosition) { var isCurrentBeforeFirst = _isCurrentBeforeFirst; var isCurrentAfterLast = _isCurrentAfterLast; var currentItem = _currentItem; var currentPosition = _currentPosition; _isCurrentBeforeFirst = newPosition < 0; _isCurrentAfterLast = newPosition >= Count; _currentItem = newItem; _currentPosition = newPosition; if (currentItem != _currentItem) { OnCurrentChanged(); } if (isCurrentBeforeFirst != _isCurrentBeforeFirst) { OnPropertyChanged(_isCurrentBeforeFirstChanged); } if (isCurrentAfterLast != _isCurrentAfterLast) { OnPropertyChanged(_isCurrentAfterLastChanged); } if (currentItem != _currentItem) { OnPropertyChanged(_currentItemChanged); } if (currentPosition != _currentPosition) { OnPropertyChanged(_currentPositionChanged); } }
public VirtualListItem <T> this[int index] { get { try { if (_list != null && _list[index] == null)// && _list.Length <= index { _list[index] = new VirtualListItem <T>(this, index); } return(_list != null ? _list[index] : null); } catch (Exception) { throw; } } set { throw new NotSupportedException(); } }
private void PopulatePageData(int startIndex, IList <T> pageData, int overallCount) { var flagRefresh = false; if (_list == null || _list.Length != overallCount || overallCount == 0) { _list = new VirtualListItem <T> [overallCount]; flagRefresh = true; } for (var i = 0; i < pageData.Count; i++) { var index = startIndex + i; if (index >= _list.Count()) { continue; } if (_list.Count() == index || _list[index] == null) { _list[index] = new VirtualListItem <T>(this, index, pageData[i]); } else { _list[index].Data = pageData[i]; } } if (flagRefresh) { if (_synchronizationContext == null || SynchronizationContext.Current != null) { FireCollectionReset(null); } else { _synchronizationContext.Post(FireCollectionReset, null); } } }
bool ICollection <VirtualListItem <T> > .Remove(VirtualListItem <T> item) { throw new NotSupportedException(); }
void ICollection <VirtualListItem <T> > .Add(VirtualListItem <T> item) { throw new NotSupportedException(); }
void IList <VirtualListItem <T> > .Insert(int index, VirtualListItem <T> item) { throw new NotSupportedException(); }
public int IndexOf(VirtualListItem <T> item) { return(item == null || item.List != this ? -1 : item.Index); }
public bool Contains(VirtualListItem <T> item) { return(IndexOf(item) != -1); }