2012-06-18 15 views
9

Tengo una aplicación de edición de imágenes, y tengo adornos personalizados que se agregan a AdornerLayer. Cuando el usuario hace clic en Adorner, quiero subirlo a la parte superior, lo que significa que si se arrastra sobre otro adorno, quiero que el primer clic quede atrapado por el adorno superior.¿Cómo cambiar el orden z de los hijos de Wpf AdornerLayer?

No puedo averiguar cómo cambiar el orden z de los elementos secundarios de AdornerLayer. Parece que no me permite ordenarlos. Incluso si elimino y vuelvo a agregar Adorner, no llega a ser el más alto.

+0

hacen los demás (no superior) adorners necesitan para capturar el evento también? –

+0

No. Quiero que el adorno más reciente haga clic para llegar a la parte superior y captar todos los clics en sus partes visibles. – Sugrue

Respuesta

5

que tenía un problema similar, pero sólo necesitamos un orden específico de mis adorners. Terminé usando la reflexión para establecer los órdenes:

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 }); 

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

Cuestiones relacionadas