ordenar elementos en un panel de pila WPF

Tengo un panel de pila con algunos controles de usuario que se agregan o eliminan durante el tiempo de ejecución. Estos elementos tienen un índice que les asigno cuando los nuevo, necesito mantener estos elementos ordenados por ese índice, así que utilicé una función de ordenación rápida que los ordena según el índice pero en la línea que hace el intercambio

          y = items[i]; //y is a temp variable
          items[i] = items[j];

yo obtengo

"El índice especificado ya está en uso. Desconecte primero el elemento visual Visual en el índice especificado"

Intenté copiarlos en una variable temporal, eliminarlos de la colección y luego asignarlos a su índice derecho con la función Insertar en la UIElementCollection, pero luego obtengo

"El Visual especificado ya es hijo de otro Visual o la raíz de un Objetivo de composición"

¿Hay algún elemento de clonación que necesito o falta algo en alguna parte?

Respuestas a la pregunta(4)

Su respuesta a la pregunta