¿Es posible obtener algunas de las funcionalidades de Window.Owner
sin obtener todo?Propietario de la ventana en WPF sin comportamiento siempre en la parte superior
Hay dos ventanas, la ventana A y la ventana B. Quiero hacerlo de manera que al seleccionar una de ellas las coloque encima de otras aplicaciones, pero una puede superponerse a la otra. (En realidad hay más de dos, pero todos deben comportarse de manera similar.)
Si configuro la ventana B como Owner
en A, entonces el cambio a cualquiera de las ventanas traerá ambos frente a otras aplicaciones (que yo quiero), pero también obligará a B a sentarse siempre encima de A (que no quiero).
De hecho, ya tengo un código que rastrea la jerarquía de ventanas independientemente de Owner
/OwnedWindows
, por lo que probablemente pueda extender eso para solucionar el problema de activación. Entonces, si eso simplifica el problema, una respuesta alternativa que estoy buscando es:
¿Cómo puedo hacer "cuando esta ventana es activada por el usuario, traiga un conjunto específico de ventanas (todas las demás en la aplicación)? al orden Z justo debajo de mí, mientras se preservan sus Z-órdenes existentes entre sí "?
+1 Tengo el mismo requisito; ¿Ya encontraste una solución? Para su pregunta de orden z: puede hacerlo guardando una pila (solo una Lista) y registrándose para el evento Activado de todas sus ventanas. En cada evento, eliminas el winodw de la pila y lo vuelves a poner encima (== list.Add). La ventana de foreach en la lista lo cruza al primer plano (usando la interoperabilidad). –
stijn
No he encontrado otra solución todavía. La respuesta de Todd a continuación parece prometedora y es probable que sea la que usaré (a menos que surja algo mejor), pero aún no he podido probarla, ya que el proyecto para el que fue esto se ha retrasado. (Por eso aún no he marcado la respuesta. Lo prometo, ¡volveré a hacerlo eventualmente!) – Miral