public void ReplaceTest()
        {
            ObservableCollection<TestClass> testCollection = new ObservableCollection<TestClass>()
            {
                new TestClass() { IntProperty = 1, StringProperty = "C" },
                new TestClass() { IntProperty = 2, StringProperty = "A" },
                new TestClass() { IntProperty = 3, StringProperty = "D" },
                new TestClass() { IntProperty = 4, StringProperty = "B" },
            };

            PagedCollectionView cv = new PagedCollectionView(testCollection);

            Assert.AreEqual("C", (cv[0] as TestClass).StringProperty);
            Assert.AreEqual("A", (cv[1] as TestClass).StringProperty);
            Assert.AreEqual("D", (cv[2] as TestClass).StringProperty);
            Assert.AreEqual("B", (cv[3] as TestClass).StringProperty);

            // replace first item
            testCollection[0] = new TestClass() { IntProperty = 5, StringProperty = "E" };

            // verify new data (still in same index)
            Assert.AreEqual("E", (cv[0] as TestClass).StringProperty);
            Assert.AreEqual("A", (cv[1] as TestClass).StringProperty);
            Assert.AreEqual("D", (cv[2] as TestClass).StringProperty);
            Assert.AreEqual("B", (cv[3] as TestClass).StringProperty);

            // now sort and page the data
            cv.PageSize = 2;
            cv.SortDescriptions.Add(new System.ComponentModel.SortDescription("StringProperty", System.ComponentModel.ListSortDirection.Ascending));

            // ----------------
            // |Page | 0  | 1  |
            // ----------------
            // | 0   | A  | B  | <---- Current Page
            // | 1   | D  | E  |
            Assert.AreEqual("A", (cv[0] as TestClass).StringProperty);
            Assert.AreEqual("B", (cv[1] as TestClass).StringProperty);

            // replace 'B', which is the 4th item in the collection
            testCollection[3] = new TestClass() { IntProperty = 6, StringProperty = "F" };

            // ----------------
            // |Page | 0  | 1  |
            // ----------------
            // | 0   | A  | D  | <---- Current Page
            // | 1   | E  | F  | (because of sorting/paging)
            Assert.AreEqual("A", (cv[0] as TestClass).StringProperty);
            Assert.AreEqual("D", (cv[1] as TestClass).StringProperty);
            cv.MoveToNextPage();
            Assert.AreEqual("E", (cv[0] as TestClass).StringProperty);
            Assert.AreEqual("F", (cv[1] as TestClass).StringProperty);
        }