Ho uno stackpanel con alcuni comandi utente aggiunti o rimossi durante il runtime. Questi elementi hanno un indice che gli assegno quando li nuovo, ho bisogno di mantenere questi elementi ordinati per quell'indice quindi prendo una funzione quicksort che li ordina in base all'indice ma sulla linea che fa lo scambioelementi di ordinamento in un pannello stack WPF
y = items[i]; //y is a temp variable
items[i] = items[j];
ottengo
"indice specificato è già in uso. Scollegare il bambino visivo in corrispondenza dell'indice specificato prima"
ho provato a copiarli in una variabile temporanea, eliminarli dalla raccolta e quindi assegnare li al loro indice giusto con la funzione Inserisci in UIElem entCollection, ma poi mi
"Specificato visiva è già un figlio di un altro visiva o la radice di un CompositionTarget"
C'è un elemento di clone che ho bisogno o qualcosa im manca da qualche parte?
beh potrei ... ma questo produce comunque gli stessi risultati quando provo a scambiare le posizioni di due elementi. Uso praticamente qualsiasi contenitore ... ma voglio essere in grado di riordinarli o di ordinarli per l'indice che ho specificato – irco
Primo: usare un ItemsControl, non un ListBox: il primo è per gli elenchi di cose che non sono intrinsecamente selezionabili. @irco: il riposizionamento manuale di elementi come questo dall'esterno di un controllo non è facilmente supportato nel modo in cui si sta tentando di farlo, ma se è possibile riordinare i dati di origine (anziché i controlli), si otterrà lo stesso risultato. Il suggerimento di Jobi è corretto: un CollectionView ordinerà automaticamente l'elenco in base all'indice specificato (anche se l'elenco è un elenco di controlli!). –
Lo faccio, i dati per creare gli elementi provengono da un db, sono ordinati ... il problema è che i nuovi elementi possono apparire sul tavolo in qualsiasi momento e non posso semplicemente cancellare la raccolta del contenitore, quindi quando aggiungo un nuovo elemento con un indice più piccolo dell'ultimo elemento e il suo aggiunto alla fine, si presenta la necessità di ordinare. Proverò il ItemsControl – irco