+ if (fromPosition > FirstVisible)
+ {
+ if (toPosition > LastVisible)
+ {
+ FirstVisible--;
+ LastVisible--;
+ }
+ else if (toPosition > FirstVisible && toPosition <= LastVisible)
+ {
+ LastVisible--;
+ }
+ }
+ else if (fromPosition >= FirstVisible && fromPosition <= LastVisible)
+ {
+ if (toPosition < FirstVisible)
+ {
+ FirstVisible++;
+ }
+ else if (toPosition > LastVisible)
+ {
+ LastVisible--;
+ }
+ }
+ else if (fromPosition > LastVisible)
+ {
+ if (toPosition <= FirstVisible)
+ {
+ FirstVisible++;
+ LastVisible++;
+ }
+ else if (toPosition > FirstVisible && toPosition <= LastVisible)
+ {
+ LastVisible++;
+ }
+ }
+
+ if (FirstVisible < 0) FirstVisible = 0;
+ if (LastVisible < 0) LastVisible = 0;
+ if (FirstVisible > colView.InternalItemSource.Count - 1) FirstVisible = colView.InternalItemSource.Count -1;
+ if (LastVisible > colView.InternalItemSource.Count - 1) LastVisible = colView.InternalItemSource.Count -1;
+
+