The control is bound to a Listbox. I found a work around. I'm not sure if its the right method. I created a temporary OC, did the move function and then reassigned it back to the old OC. Then updated the ListBox.
PageCollection completedItem = fe.DataContext as PageCollection;
int fileNoCompleted = completedItem.FileNo;
if (completedItem.CompletionStatus == false)
{
int position = 0;
for (int i = PageCollectionObservableCollection.Count - 1; i > -1; i--)
{
if (PageCollectionObservableCollection.ElementAt(i).CompletionStatus == false)
{
position = i;
break;
}
}
completedItem.CompletionStatus = true;
completedItem.Color = Colors.Green;
completionStatusArray[fileNoCompleted] = true;
//EDIT
List<PageCollection> l = PageCollectionObservableCollection.ToList<PageCollection>();
ObservableCollection<PageCollection> tempPageCol = new ObservableCollection<PageCollection>(l);
tempPageCol.Move(fileNoCompleted, position);
PageCollectionObservableCollection = tempPageCol;
CategoryLB.ItemsSource = PageCollectionObservableCollection;
CategoryLB.UpdateLayout();
}