private void RemoveItem(int index, bool supressCollectionChanged) { int oldCount = Count; VisibleItem removedItem = filteredItems[index]; items.RemoveAt(index); for (int i = index + 1; i < oldCount; i++) { if (removedItem.Visible && filteredItems[i].Visible) { filteredItems[i].VisibleIndex--; } filteredItems[i - 1] = filteredItems[i]; } filteredItems.Remove(filteredItems.Count - 1); removedItem.Item.PropertyChanged -= Item_PropertyChanged; if (!supressCollectionChanged && removedItem.Visible) { OnCollectionChanged(new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Remove, removedItem.Item, index)); } }
private void InsertItem(int index, T item, bool supressCollectionChanged) { bool visible = (Filter != null) ? Filter(item) : true; int visibleIndex = -1; // Move up all items after that are after index for (int i = items.Count; i > index; i--) { filteredItems[i] = filteredItems[i - 1]; // Update visible index if new item is also visable if (filteredItems[i].Visible && visible) { visibleIndex = filteredItems[i].VisibleIndex; filteredItems[i].VisibleIndex++; } } // If inserting at end of list and item is visible, set visible index as largest VisibleIndex if (index == items.Count && visible) { VisibleItem last = (filteredItems.Values.Where(x => x.Visible)).LastOrDefault(); if (last != null) { visibleIndex = last.VisibleIndex + 1; } else { visibleIndex = 0; } } items.Insert(index, item); filteredItems[index] = new VisibleItem(visibleIndex, item, visible); item.PropertyChanged += Item_PropertyChanged; if (!supressCollectionChanged && visible) { OnCollectionChanged(new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Add, item, visibleIndex)); } }
private ObservableCollection <VisibleItem> getDataList() { VisibleItem vItem; for (var k = 1; k < 10; k++) { vItem = new VisibleItem(); vItem.Group = "Group " + k; vItem.Name = "Item Name " + k; vItem.PictureID = k; vItem.SomeDetail = "Detail " + k; vItem.Info = "Info " + k; vItem.GHeaderName = "GHeaderName " + k; vItem.Info = "Info " + k; // vItem.Class dataList.Add(vItem); } return(dataList); }
public IList <VisibleItem> GetCurrentVisibleItems() { List <TstUVisibleItem> rawVisibleItemsList; lock (_lockObj) { if (!_isRawVisibleItemsListChanged) { return(_result); } _isRawVisibleItemsListChanged = false; rawVisibleItemsList = _rawVisibleItemsList; } var result = new List <VisibleItem>(); var rawVisibleItemsDict = rawVisibleItemsList.GroupBy(p => p.InstanceId); foreach (var rawVisibleItemsKVPItem in rawVisibleItemsDict) { var firstElem = rawVisibleItemsKVPItem.First(); var item = new VisibleItem(); item.InstanceId = firstElem.InstanceId; item.Position = firstElem.Position; item.IsInFocus = rawVisibleItemsKVPItem.Any(p => p.IsInFocus); item.MinDistance = rawVisibleItemsKVPItem.Min(p => p.Distance); result.Add(item); } _result = result; return(result); }
protected void InvalidateItem(int index) { if (index < VisibleItems[0].Index) { return; } if (index > VisibleItems[VisibleItems.Count - 1].Index) { return; } var vi = new VisibleItem { Index = index }; var visibleIndex = VisibleItems.BinarySearch(vi, new VisibleItemComparer()); var rectF = VisibleItems[visibleIndex].Rectangle; Invalidate(new Rectangle( (int)Math.Floor(rectF.X) - 4, (int)Math.Floor(rectF.Y) - 4, (int)Math.Ceiling(rectF.Width) + 8, (int)Math.Ceiling(rectF.Height) + 8 )); }
public CellData(byte x, byte y) { this.index = new Vector2(x, y); this.visibleItem = new VisibleItem(); }
private void selectedItemChanged(VisibleItem item) { ///your filter logic goes here }