public void Replace(int index, int oldCount, int newCount, bool reset) { for (int i = 0; i < oldCount; i++) { Inner.RemoveAt(index); } for (int i = 0; i < newCount; i++) { Inner.Insert(index, (10000 + i).ToString()); } if (reset) { OnItemsSourceChanged(new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Reset)); } else { OnItemsSourceChanged(CollectionChangeEventArgsConverters.CreateNotifyArgs( NotifyCollectionChangedAction.Replace, oldStartingIndex: index, oldItemsCount: oldCount, newStartingIndex: index, newItemsCount: newCount)); } }
public void CanCreateFromIObservableVector() { RunOnUIThread.Execute(() => { var data = new WinRTObservableVector(Enumerable.Range(0, 100).Select(i => string.Format("Item #{0}", i))); var dataSource = new InspectingDataSource(data); var recorder = new CollectionChangeRecorder(dataSource); Verify.AreEqual(100, dataSource.Count); Verify.AreEqual("Item #4", (string)dataSource.GetAt(4)); Verify.IsFalse(dataSource.HasKeyIndexMapping); data.Insert(4, "Inserted Item"); data.RemoveAt(7); data[15] = "Replaced Item"; data.Clear(); VerifyRecordedCollectionChanges( expected: new NotifyCollectionChangedEventArgs[] { CollectionChangeEventArgsConverters.CreateNotifyArgs(NotifyCollectionChangedAction.Add, -1, 0, 4, 1), CollectionChangeEventArgsConverters.CreateNotifyArgs(NotifyCollectionChangedAction.Remove, 7, 1, -1, 0), CollectionChangeEventArgsConverters.CreateNotifyArgs(NotifyCollectionChangedAction.Replace, 15, 1, 15, 1), CollectionChangeEventArgsConverters.CreateNotifyArgs(NotifyCollectionChangedAction.Reset, -1, 0, -1, 0), }, actual: recorder.RecordedArgs); }); }
public void Reset() { try { Owner.AppendAsyncEventMessage("SampleDataSource Reset"); Random rand = new Random(123); for (int i = 0; i < 10; i++) { int from = rand.Next(0, Inner.Count - 1); var value = Inner[from]; Inner.RemoveAt(from); int to = rand.Next(0, Inner.Count - 1); Inner.Insert(to, value); } OnDataSourceChanged(CollectionChangeEventArgsConverters.CreateNotifyArgs(NotifyCollectionChangedAction.Reset, -1, -1, -1, -1)); } catch (Exception ex) { Owner.txtExceptionReport.Text = ex.ToString(); Owner.lstScrollerEvents.Items.Add(ex.ToString()); } }
public void Remove(int index, int count, bool reset) { try { Owner.AppendAsyncEventMessage("SampleDataSource Remove OldIndex=" + index + ", OldCount=" + count + ", Reset=" + reset); for (int i = 0; i < count; i++) { Inner.RemoveAt(index); } if (reset) { OnDataSourceChanged(CollectionChangeEventArgsConverters.CreateNotifyArgs(NotifyCollectionChangedAction.Reset, -1, -1, -1, -1)); } else { OnDataSourceChanged(CollectionChangeEventArgsConverters.CreateNotifyArgs( NotifyCollectionChangedAction.Remove, oldStartingIndex: index, oldItemsCount: count, newStartingIndex: -1, newItemsCount: 0)); } } catch (Exception ex) { Owner.txtExceptionReport.Text = ex.ToString(); Owner.lstScrollerEvents.Items.Add(ex.ToString()); } }
private static NotifyCollectionChangedEventArgs Clone(NotifyCollectionChangedEventArgs args) { return(CollectionChangeEventArgsConverters.CreateNotifyArgs( args.Action, args.OldStartingIndex, args.OldItems == null ? -1 : args.OldItems.Count, args.NewStartingIndex, args.NewItems == null ? -1 : args.NewItems.Count)); }
private void OnCollectionChanged(object sender, NotifyCollectionChangedEventArgs e) { var args = CollectionChangeEventArgsConverters.CreateNotifyArgs( e.Action, e.OldStartingIndex, e.OldItems == null ? -1 : e.OldItems.Count, e.NewStartingIndex, e.NewItems == null ? -1 : e.NewItems.Count); OnItemsSourceChanged(args); }
public void Remove(int index, int count) { for (int i = 0; i < count; i++) { Inner.RemoveAt(index); } OnDataSourceChanged(CollectionChangeEventArgsConverters.CreateNotifyArgs( NotifyCollectionChangedAction.Remove, oldStartingIndex: index, oldItemsCount: count, newStartingIndex: -1, newItemsCount: 0)); }
public void Insert(int index, int count) { for (int i = 0; i < count; i++) { Inner.Insert(index + i, string.Format("ItemI #{0}", Inner.Count)); } OnDataSourceChanged(CollectionChangeEventArgsConverters.CreateNotifyArgs( NotifyCollectionChangedAction.Add, oldStartingIndex: -1, oldItemsCount: 0, newStartingIndex: index, newItemsCount: count)); }
public void Replace(int index, int oldCount, int newCount, bool reset) { try { Owner.AppendAsyncEventMessage("SampleDataSource Replace OldIndex=" + index + ", OldCount=" + oldCount + ", NewCount=" + newCount + ", Reset=" + reset); for (int i = 0; i < oldCount; i++) { Inner.RemoveAt(index); } for (int i = 0; i < newCount; i++) { switch (Owner.cmbItemHeightMode.SelectedIndex) { case 0: // Random Random rand = new Random(123); Inner.Insert(index, new DataItem(string.Format("ItemR #{0}", Inner.Count), 100 + rand.Next(0, 200))); break; case 1: // Increasing Inner.Insert(index, new DataItem(string.Format("ItemR #{0}", Inner.Count), 100 + i * 10)); break; case 2: // Constant Inner.Insert(index, new DataItem(string.Format("ItemR #{0}", Inner.Count), 100)); break; } } if (reset) { OnDataSourceChanged(CollectionChangeEventArgsConverters.CreateNotifyArgs(NotifyCollectionChangedAction.Reset, -1, -1, -1, -1)); } else { OnDataSourceChanged(CollectionChangeEventArgsConverters.CreateNotifyArgs( NotifyCollectionChangedAction.Replace, oldStartingIndex: index, oldItemsCount: oldCount, newStartingIndex: index, newItemsCount: newCount)); } } catch (Exception ex) { Owner.txtExceptionReport.Text = ex.ToString(); Owner.lstScrollerEvents.Items.Add(ex.ToString()); } }
public void Insert(int index, int count, bool reset) { for (int i = 0; i < count; i++) { Inner.Insert(index + i, (1000 + i).ToString()); } if (reset) { OnItemsSourceChanged(new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Reset)); } else { OnItemsSourceChanged(CollectionChangeEventArgsConverters.CreateNotifyArgs( NotifyCollectionChangedAction.Add, oldStartingIndex: -1, oldItemsCount: 0, newStartingIndex: index, newItemsCount: count)); } }
public void Move(int oldIndex, int newIndex, int count, bool reset) { var items = Inner.GetRange(oldIndex, count); Inner.RemoveRange(oldIndex, count); Inner.InsertRange(newIndex, items); if (reset) { OnItemsSourceChanged(new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Reset)); } else { OnItemsSourceChanged(CollectionChangeEventArgsConverters.CreateNotifyArgs( NotifyCollectionChangedAction.Move, oldStartingIndex: oldIndex, oldItemsCount: count, newStartingIndex: newIndex, newItemsCount: count)); } }
public void Remove(int index, int count, bool reset) { for (int i = 0; i < count; i++) { Inner.RemoveAt(index); } if (reset) { OnItemsSourceChanged(new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Reset)); } else { OnItemsSourceChanged(CollectionChangeEventArgsConverters.CreateNotifyArgs( NotifyCollectionChangedAction.Remove, oldStartingIndex: index, oldItemsCount: count, newStartingIndex: -1, newItemsCount: 0)); } }