public void Test1() { var dl = new List <TestItemDM>(new [] { new TestItemDM(0) }); var bl = new ListBM <TestItemBM> { Metadata = { DataProvider = { Data = dl } } }; var vl = new ListVM <TestItemVM> { Metadata = { DataProvider = { Data = bl } } }; dl = new List <TestItemDM>(new [] { new TestItemDM(1) }); bl = new ListBM <TestItemBM> { Metadata = { DataProvider = { Data = dl } } }; TestItemVM oldFirst = vl.FirstOrDefault(); TestItemVM newfirst = null; vl.CollectionChanged += delegate { newfirst = vl.FirstOrDefault(); }; vl.Metadata.DataProvider.Data = bl; var oldFirstTypeInstanceId = oldFirst.TypeInstanceId(); var newFirstTypeInstanceId = newfirst.TypeInstanceId(); Assert.AreEqual(newFirstTypeInstanceId, oldFirstTypeInstanceId + 1); }