public void GroupingInListBoxTest() { ObservableCollection <TestClass> collection = new ObservableCollection <TestClass>() { new TestClass { IntProperty = 1, StringProperty = "A" }, new TestClass { IntProperty = 2, StringProperty = "B" }, new TestClass { IntProperty = 3, StringProperty = "A" }, new TestClass { IntProperty = 4, StringProperty = "B" } }; PagedCollectionView cv = new PagedCollectionView(collection); ListBox lb = new ListBox(); lb.ItemsSource = cv; this.CreateAsyncTask( lb, delegate { Assert.AreEqual(4, lb.Items.Count); cv.GroupDescriptions.Add(new PropertyGroupDescription("StringProperty")); Assert.AreEqual(4, lb.Items.Count); Assert.AreEqual("A", (lb.Items[0] as TestClass).StringProperty); Assert.AreEqual("A", (lb.Items[1] as TestClass).StringProperty); Assert.AreEqual("B", (lb.Items[2] as TestClass).StringProperty); Assert.AreEqual("B", (lb.Items[3] as TestClass).StringProperty); cv.PageSize = 3; cv.MoveToPage(1); Assert.AreEqual(1, lb.Items.Count); Assert.AreEqual("B", (lb.Items[0] as TestClass).StringProperty); TestClass newItem = cv.AddNew() as TestClass; newItem.StringProperty = "A"; newItem.IntProperty = 5; // --------------------- // |Page | 0 | 1 | 2 | // --------------------- // | 0 | A | A | B | // | 1 | B |-A- | | <---- Current Page Assert.AreEqual("B", (lb.Items[0] as TestClass).StringProperty); Assert.AreEqual("A", (lb.Items[1] as TestClass).StringProperty); cv.CommitNew(); // --------------------- // |Page | 0 | 1 | 2 | // --------------------- // | 0 | A | A |-A- | // | 1 | B | B | | <---- Current Page Assert.AreEqual("B", (lb.Items[0] as TestClass).StringProperty); Assert.AreEqual("B", (lb.Items[1] as TestClass).StringProperty); cv.MoveToFirstPage(); Assert.AreEqual("A", (lb.Items[0] as TestClass).StringProperty); Assert.AreEqual("A", (lb.Items[1] as TestClass).StringProperty); Assert.AreEqual("A", (lb.Items[2] as TestClass).StringProperty); }); EnqueueTestComplete(); }