0 out of 1 rated this helpful - Rate this topic

ObservableCollection<T>.Move Method

Moves the item at the specified index to a new location in the collection.

Namespace:  System.Collections.ObjectModel
Assembly:  System (in System.dll)
public void Move(
	int oldIndex,
	int newIndex
)

Parameters

oldIndex
Type: System.Int32
The zero-based index specifying the location of the item to be moved.
newIndex
Type: System.Int32
The zero-based index specifying the new location of the item.

Subclasses can override the MoveItem method to provide custom behavior for this method.

.NET Framework

Supported in: 4, 3.5, 3.0

.NET Framework Client Profile

Supported in: 4, 3.5 SP1

Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.
Did you find this helpful?
(1500 characters remaining)
Community Content Add
Annotations FAQ
Failing move removes moved item.
Trying to move an item to a location outside the collection throws an exception (that's okay) but also removes the item to be moved (that's very bad). Try:

var oc = new ObservableCollection&lt;String&gt;() { "A", "B", "C", "D", "E" };
var item1 = oc[1];
try { oc.Move(1, oc.Count); }
catch ( ArgumentOutOfRangeException ) { /* do something */ }
var containsItemToBeMoved = oc.Contains(item1); // False

The call to Move throws an ArgumentOutOfRangeException. That's okay since the new index is out of range indeed. But the item that has been at index 1 before the call has gone afterwards! The reason is that the item to be moved is first removed and then inserted again, and the index of the new location is only checked by the inserting. Hence the removing has already happened when the exception is thrown.

Conclusion: The index should be checked at the beginning of the moving.

  • 4/18/2012
  • gi1