private void Child_Changed(object sender, JsonValueChangeEventArgs e) { for (int i = 0; i < this.grid.Items.Count; i++) { if (this.grid.Items[i] == sender) { int index = this.grid.Items.IndexOf(this.grid.Items[i]); this.grid.Items.RemoveAt(index); this.grid.Items.Insert(index, sender); } } }
private void Items_Changed(object sender, JsonValueChangeEventArgs e) { switch (e.Change) { case JsonValueChange.Add: this.grid.Items.Insert(e.Index, e.Child); break; case JsonValueChange.Remove: this.grid.Items.RemoveAt(e.Index); break; } }
private static void ValidateExpectedEvents(List <Tuple <bool, JsonValue, JsonValueChangeEventArgs> > expectedEvents, List <Tuple <bool, JsonValue, JsonValueChangeEventArgs> > actualEvents) { Assert.AreEqual(expectedEvents.Count, actualEvents.Count); for (int i = 0; i < expectedEvents.Count; i++) { bool expectedIsChanging = expectedEvents[i].Item1; bool actualIsChanging = expectedEvents[i].Item1; Assert.AreEqual(expectedIsChanging, actualIsChanging, string.Format("Event raised is different for expected event {0}: expected Chang{1}, actual Chang{2}", i, expectedIsChanging ? "ing" : "ed", actualIsChanging ? "ing" : "ed")); JsonValue expectedSender = expectedEvents[i].Item2; JsonValue actualSender = actualEvents[i].Item2; Assert.AreEqual(expectedSender, actualSender, string.Format("Sender is different for expected event {0}: expected {1}, actual {2}", i, expectedSender, actualSender)); JsonValueChangeEventArgs expectedEventArgs = expectedEvents[i].Item3; JsonValueChangeEventArgs actualEventArgs = actualEvents[i].Item3; Assert.AreEqual(expectedEventArgs.Change, actualEventArgs.Change, string.Format("JVChangeEventArgs.Change is different for event {0}: expected {1}, actual {2}", i, expectedEventArgs.Change, actualEventArgs.Change)); Assert.AreEqual(expectedEventArgs.Index, actualEventArgs.Index, string.Format("JVChangeEventArgs.Index is different for event {0}: expected {1}, actual {2}", i, expectedEventArgs.Index, actualEventArgs.Index)); Assert.AreEqual(expectedEventArgs.Key, actualEventArgs.Key, string.Format("JVChangeEventArgs.Key is different for event {0}: expected {1}, actual {2}", i, expectedEventArgs.Key ?? "<<null>>", actualEventArgs.Key ?? "<<null>>")); string expectedChild = expectedEventArgs.Child == null ? "null" : expectedEventArgs.Child.ToString(); string actualChild = actualEventArgs.Child == null ? "null" : actualEventArgs.Child.ToString(); Assert.AreEqual(expectedChild, actualChild, string.Format("JVChangeEventArgs.Child is different for event {0}: expected {1}, actual {2}", i, expectedChild, actualChild)); } }
private static void PreventChanging(object sender, JsonValueChangeEventArgs e) { throw new InvalidOperationException("AnyInstance.AnyJsonArray or AnyJsonObject cannot be modified; please clone the instance if the test needs to change it."); }