我似乎不能通过阅读documentation for ObservableCollection.Move(int oldIndex, int newIndex) on MSDN来解决这个问题
oldIndex类型: System.Int32指定要移动的项的位置的从零开始的索引。newIndex类型: System.Int32指定项的新位置的从零开始的索引。
我不明白它是怎么工作的。使用newIndex
时,项目会发生什么情况?我的假设是使用index >= newIndex
的每一项的索引都是递减的。这个假设是正确的吗?更重要的是,这种行为在MSDN上有解释或描述吗?
发布于 2012-05-06 22:33:12
让我以单元测试的形式解释一下Move
的行为:
[Test]
public void ObservableTest()
{
var observable = new ObservableCollection<string> { "A", "B", "C", "D", "E" };
observable.Move(1, 3); // oldIndex < newIndex
// Move "B" to "D"'s place: "C" and "D" are shifted left
CollectionAssert.AreEqual(new[] { "A", "C", "D", "B", "E" }, observable);
observable.Move(3, 1); // oldIndex > newIndex
// Move "B" to "C"'s place: "C" and "D" are shifted right
CollectionAssert.AreEqual(new[] { "A", "B", "C", "D", "E" }, observable);
observable.Move(1, 1); // oldIndex = newIndex
// Move "B" to "B"'s place: "nothing" happens
CollectionAssert.AreEqual(new[] { "A", "B", "C", "D", "E" }, observable);
}
发布于 2012-05-06 22:22:57
我想要一个简单的解释:
对象被移动到指定的位置,然后集合中的所有对象都从零开始向上重新索引。
https://stackoverflow.com/questions/10471222
复制相似问题