2012-06-18 10 views
9

Ho un'applicazione per la modifica delle immagini e ho degli ornamenti personalizzati che vengono aggiunti a un AdornerLayer. Quando l'utente fa clic su un Adorner, voglio portarlo in cima - nel senso che se viene trascinato su un altro adorner, voglio che il primo clic venga catturato dall'ornatore più in alto.Come cambiare l'ordine z dei bambini Wpf AdornerLayer?

Non riesco a capire come modificare l'ordine z degli elementi secondari di AdornerLayer. Non sembra permettermi di ordinarli. Anche se rimuovo e riaggiungi l'Adorner, non ottiene il massimo.

+0

fanno gli altri (non più in alto) adorners hanno bisogno di catturare l'evento troppo? –

+0

No. Desidero che l'adorner più recente selezionato diventi il ​​più in alto e per afferrare tutti i clic sulle sue parti visibili. – Sugrue

risposta

5

Ho avuto un problema simile, ma solo bisogno di un ordinamento specifico delle mie adorners. Ho finito per usare riflessione per impostare gli ordini:

var setZOrderMethodInfo = adornerLayer.GetType().GetMethod("SetAdornerZOrder", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance);  
setZOrderMethodInfo.Invoke(adornerLayer, new object[] { adorner1, 0 });  
setZOrderMethodInfo.Invoke(adornerLayer, new object[] { adorner2, 1 }); 

da http://social.msdn.microsoft.com/Forums/en/wpf/thread/40bff84e-c4b5-4ea0-87ea-43461df9f24b

Problemi correlati